gpt4 book ai didi

hadoop - 从非分区表创建分区表

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

假设我在 Hive 中有内部 orc 非分区表:

CREATE TABLE IF NOT EXISTS non_partitioned_table(
id STRING,
company STRING,
city STRING,
country STRING,
)
STORED AS ORC;

是否可以通过类似 cte 的语句以某种方式创建 parquet 分区表?

create partitioned_table PARTITION ON (date STRING) like non_partitioned_table;
alter table partitioned_table SET FILEFORMAT PARQUET;

此创建语句不起作用。

所以基本上我需要添加列并根据该列对表进行分区。我知道我可以通过简单的 create table 语句创建表,但我需要在 CREATE TABLE LIKE 内完成,并以某种方式改变

最佳答案

您的表格没有以 date 列开头,因此您将不得不创建一个新列。

您也许能够 ALTER TABLE non_partitioned_table ADD PARTITION ,但我自己还没有尝试过。如果你想尝试,我建议分区位置在现有 HDFS 目录之外。

无论如何,CREATE-TABLE-LIKE DDL不支持 PARTITIONED BY

 CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
LIKE existing_table_or_view_name
[LOCATION hdfs_path];

您需要从第一个复制DESCRIBE TABLE 架构,然后更改它并添加PARTITIONED BY,并可选择指定STORED AS . (SET FILEFORMAT PARQUET 不会就地更改数据类型)。

然后,如果你想要新表中的数据,你需要INSERT OVERWRITE TABLE

关于hadoop - 从非分区表创建分区表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956418/

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