首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从非分区表创建分区表

从非分区表创建分区表
EN

Stack Overflow用户
提问于 2017-10-26 14:01:28
回答 1查看 1.1K关注 0票数 0

假设我在Hive中有内部orc非分区表:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS non_partitioned_table(
        id STRING,
        company STRING,
        city STRING,
        country STRING,
        )
    STORED AS ORC;

是否有可能以这种方式通过cte like语句创建分区表?

代码语言:javascript
复制
create partitioned_table PARTITION ON (date STRING) like non_partitioned_table;
alter table partitioned_table SET FILEFORMAT PARQUET;

这个create语句不起作用。

因此,基本上,我需要添加列并使表按该列进行分区。我知道我可以通过简单的create语句创建表,但我需要在CREATE中这样做,比如和修改后的表。

EN

回答 1

Stack Overflow用户

发布于 2017-10-26 19:48:36

您的表一开始没有一个date列,所以您必须创建一个新的列。

你也许可以ALTER TABLE non_partitioned_table ADD PARTITION,但我还没试过。如果您想尝试它,我建议分区位置位于现有HDFS目录之外。

无论如何, DDL不支持PARTITIONED BY

代码语言:javascript
复制
 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46956418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档