假设我在Hive中有内部orc非分区表:
CREATE TABLE IF NOT EXISTS non_partitioned_table(
id STRING,
company STRING,
city STRING,
country STRING,
)
STORED AS ORC;是否有可能以这种方式通过cte like语句创建分区表?
create partitioned_table PARTITION ON (date STRING) like non_partitioned_table;
alter table partitioned_table SET FILEFORMAT PARQUET;这个create语句不起作用。
因此,基本上,我需要添加列并使表按该列进行分区。我知道我可以通过简单的create语句创建表,但我需要在CREATE中这样做,比如和修改后的表。
发布于 2017-10-26 19:48:36
您的表一开始没有一个date列,所以您必须创建一个新的列。
你也许可以ALTER TABLE non_partitioned_table ADD PARTITION,但我还没试过。如果您想尝试它,我建议分区位置位于现有HDFS目录之外。
无论如何, 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
https://stackoverflow.com/questions/46956418
复制相似问题