[英]Create partitioned table from non partitioned table
假设我在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 table语句创建表,但是我需要在CREATE TABLE LIKE和修改后的方式中进行创建
您的表没有开始的date
列,因此您将不得不创建一个新的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
不会SET FILEFORMAT PARQUET
更改数据类型)。
然后,如果要在新表中添加数据,则需要INSERT OVERWRITE TABLE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.