假设我在Hive中有内部orc非分区表:
CREATE TABLE IF NOT EXISTS non_partitioned_table(
id STRING,
company STRING,
city STRING,
country STRING,
)
STORED AS ORC;
是否有可能以某种方式通过cte like statement创建镶木地板分区表?
create partitioned_table PARTITION ON (date STRING) like non_partitioned_table;
alter table partitioned_table SET FILEFORMAT PARQUET;
这个创建语句不起作用。
所以基本上我需要添加由此列分区的列和make表。我知道我可以通过简单的create table语句创建表,但我需要在 CREATE TABLE LIKE 中进行创建,并且不知何故更改
答案 0 :(得分:1)
您的表格中没有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