繁体   English   中英

从非分区表创建分区表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM