我想将包含文本格式的现有表更改为orc格式。我能够通过以下方式做到这一点:
(1)以orc格式手动创建具有分区的表,然后,
(2)使用INSERT OVERWRITE语句填充表。
我正在尝试为此使用CTAS(创建表... AS选择...)语句。
有什么办法可以在CTAS语句中包括动态分区?
因此,如果我的文本数据集具有多个分区(例如:年和月),我可以直接在CTAS语句中指出吗?
格式可能是这样的:
CREATE TABLE TEST_TABLE
STORED AS ORC
WITH PARTITION(year, month)
LOCATION '/<my_location>'
tblproperties ("orc.compress"="SNAPPY")
AS SELECT * FROM <existing_table>;
有什么想法吗?
注意:我对CTAS语句感兴趣的原因是:使用此语句,我实际上不需要指出每个列的名称。
但是,如果我创建一个基于orc的表,然后手动填充它,则在创建表时必须指出所有列。没关系但是,如果我现有的表包含很多列,则不是一个好主意。
最佳答案
不支持
hive> create table t partitioned by (p int) as select 1 as i;
失败:SemanticException [错误10068]:
CREATE-TABLE-AS-SELECT不支持目标表中的分区
关于hive - 具有动态分区的CTAS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43241648/