gpt4 book ai didi

hadoop - Hive动态分区问题

转载 作者:可可西里 更新时间:2023-11-01 15:26:09 27 4
gpt4 key购买 nike

我有如下 2 个表。

CREATE EXTERNAL TABLE IF NOT EXISTS TEMP_tab(id int,mytime STRING,age int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'hdfs://xxx';

CREATE TABLE IF NOT EXISTS main_TAB(id int,age int)
PARTITIONED BY (mytime STRING)
STORED AS ORC
tblproperties ("orc.compress"="ZLIB");

FROM TEMP_TAB INSERT OVERWRITE TABLE main_TAB
PARTITION (mytime)
SELECT *,substr(mytime,0,10) as mytime;

但奇怪的是 Insert 不起作用。它有以下错误信息

Error: org.apache.spark.sql.AnalysisException: Cannot insert into table m16.main_TAB because the number of columns are different: need 2 columns, but query has 3 columns.; (state=,code=0)

我也已经设置了这两个

SET hive.exec.dynamic.partition = true
SET hive.exec.dynamic.partition.mode = nonstrict

最佳答案

现在所有拼写错误都已修复,您可以更轻松地看到自己在做什么。

最后一行,您选择了 mytime 两次。我不确定为什么错误认为您没有 4 列,但是无论如何,不​​要使用 * 因为您有一个与源表中的列同名的分区列.

SELECT id, age, substr(mytime,0,10) as mytime;

当插入分区表时,我注意到分区列总是需要最后选择

关于hadoop - Hive动态分区问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47123329/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com