Tan*_*vir 2 hive partition orc
我想将包含文本格式的现有表更改为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>;
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
注意:我对CTAS语句感兴趣的原因是:使用此语句,我真的不需要指出每个列的名称。但是,如果我创建一个基于orc的表,然后手动填充它,则在创建表时必须指出所有列。没关系 但是,如果我现有的表包含很多列,则不是一个好主意。
不支持
hive> create table t partitioned by (p int) as select 1 as i;
Run Code Online (Sandbox Code Playgroud)
失败:SemanticException [错误10068]:
CREATE-TABLE-AS-SELECT不支持目标表中的分区