gpt4 book ai didi

hadoop - 从现有的外部分区表创建新的配置单元表

转载 作者:可可西里 更新时间:2023-11-01 16:32:33 25 4
gpt4 key购买 nike

我有一个包含近 500 个分区的外部分区表。我正在尝试创建另一个具有与旧表相同属性的外部表。然后我想将所有分区从我的旧表复制到新创建的表。下面是我的创建表查询。我的旧表存储为 TEXTFILE,我想将新表保存为 ORC 文件。

'add jar json_jarfile;
CREATE EXTERNAL TABLE new_table_orc (col1,col2,col3...col27)
PARTITIONED BY (year string, month string, day string)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (....)
STORED AS orc
LOCATION 'path';'

并在创建此表之后。我正在使用以下查询将分区从旧表插入到新表。我只想将几列从原始表复制到新表

'set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE new_table_orc PARTITION (year,month,day) SELECT col2,col3,col6,year,month,day FROM old_table;
ALTER TABLE new_table_orc RECOVER PARTITIONS;'

我遇到了错误。

'FAILED: SemanticException [Error 10044]: Line 2:23 Cannot insert into target table because column number/types are different 'day': Table insclause-0 has 27 columns, but query has 6 columns.'

有什么建议吗?

最佳答案

您的查询必须与新表中列的数量和类型相匹配。您已经创建了包含 27 个常规列和 3 个分区列的新表,但您的查询只选择了 6 个列。

如果您真的只关心这六列,则修改新表以仅包含这六列。如果您确实需要所有列,请修改您的选择语句以选择所有这些列。

您也不需要“恢复分区”语句。当您插入具有动态分区的表时,它会在文件系统和元存储中创建这些分区。

关于hadoop - 从现有的外部分区表创建新的配置单元表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23794625/

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