创建带分区的Hive表时遇Presto SQL报错:mismatched input 'PARTITIONED'
解决Presto创建Hive分区表的语法错误
你遇到的错误是因为Presto的CREATE TABLE语法与Hive原生语法存在差异,PARTITIONED BY子句不能直接放在表字段定义之后,必须通过WITH子句指定分区配置。
以下是正确的两种写法:
写法一:通过WITH子句指定分区列(无需提前定义分区列)
CREATE TABLE IF NOT EXISTS schema.table_name ( ID varchar(20), name varchar(50) ) WITH ( partitioned_by = ARRAY['part_dt', 'system'] );
注:分区列的数据类型会默认设为VARCHAR,如果需要指定特定类型,需先在表字段中定义分区列。
写法二:先定义分区列,再通过WITH声明分区
CREATE TABLE IF NOT EXISTS schema.table_name ( ID varchar(20), name varchar(50), part_dt varchar(8), system varchar(5) ) WITH ( partitioned_by = ARRAY['part_dt', 'system'] );
关键说明:Presto对Hive表的DDL做了适配,不支持Hive原生的PARTITIONED BY (列名 数据类型)写法,必须通过WITH (partitioned_by = ARRAY['列名1', '列名2'])的形式声明分区。
内容的提问来源于stack exchange,提问作者Ash
相关产品推荐
相关产品推荐

