Hive 配置单元-使用“select query”和“partition by”命令创建表语句
我想在配置单元中创建一个分区表。我知道先用CREATETABLE创建一个表结构。。。按命令分区,然后使用insert into table命令将数据插入表中 但我试图做的是将这两个命令组合到一个查询中,如下面所示,但它会抛出错误Hive 配置单元-使用“select query”和“partition by”命令创建表语句,hive,hiveql,create-table,hive-partitions,hiveddl,Hive,Hiveql,Create Table,Hive Partitions,Hiveddl,我想在配置单元中创建一个分区表。我知道先用CREATETABLE创建一个表结构。。。按命令分区,然后使用insert into table命令将数据插入表中 但我试图做的是将这两个命令组合到一个查询中,如下面所示,但它会抛出错误 CREATE TABLE test_extract AS SELECT * FROM master_extract PARTITION BY (year string ,month string) ; 年和月都是master_extract表中的两个独立列 有什么
CREATE TABLE test_extract AS
SELECT
*
FROM master_extract
PARTITION BY (year string
,month string)
;
年和月都是master_extract表中的两个独立列
有什么方法可以实现这样的目标吗?不,这是不可能的,因为有以下限制:
The target table cannot be a partitioned table.
The target table cannot be an external table.
The target table cannot be a list bucketing table.
您可以单独创建表,然后插入并覆盖它。不,这是不可能的,因为有以下限制:
The target table cannot be a partitioned table.
The target table cannot be an external table.
The target table cannot be a list bucketing table.
您可以单独创建表,然后插入并覆盖它。自从最初提出并回答这个问题以来,已经有了一些进展。按照配置单元:从配置单元3.2.0开始,CTAS语句可以为目标表hive-20241定义分区规范 你也可以看到相关的票。早在2018年7月就已经解决了 因此,如果您的蜂巢是3.2.0或更高版本,那么您只需执行以下操作即可
CREATE TABLE test_extract PARTITIONED BY (year string, month string) AS
SELECT
col1,
col2,
year,
month
FROM master_extract
自从最初提出并回答这个问题以来,已经有了一些进展。按照配置单元:从配置单元3.2.0开始,CTAS语句可以为目标表hive-20241定义分区规范 你也可以看到相关的票。早在2018年7月就已经解决了 因此,如果您的蜂巢是3.2.0或更高版本,那么您只需执行以下操作即可
CREATE TABLE test_extract PARTITIONED BY (year string, month string) AS
SELECT
col1,
col2,
year,
month
FROM master_extract
有道理。谢谢@leftjoin,这很有意义。谢谢@leftjoin