Partitioned by 给我创建外部表时重复的错误列

Posted

技术标签:

【中文标题】Partitioned by 给我创建外部表时重复的错误列【英文标题】:Partitioned by gives me error column duplicated when creating external table 【发布时间】:2019-09-09 17:21:32 【问题描述】:

我正在使用 'partitioned by' 创建一个外部表,但出现以下错误:

 'Invalid operation: column "#id" duplicated'

我最初认为它可能与字符 # 有关,但后来我尝试了不同的列,我得到了同样的错误。 (如果有人询问 #,我将文件从 csv 上传到 S3,标题包括 #,并且在创建表时无法将列名更改为没有此 # 的名称,否则只会带来空值。)

CREATE EXTERNAL TABLE schema.table_name
(
   #id            BIGINT,
   uf             varchar(255)
)



 partitioned by (#id BIGINT,
                  uf varchar(255))
  row format delimited
  fields terminated by ','
  stored as parquet
  location 's3://bucket/folder/'

【问题讨论】:

【参考方案1】:

您的问题是您尝试使用已被列使用的名称来命名分区。

正如您在文档中看到的here,这是不允许的:

创建一个外部表并在 PARTITIONED BY 子句中指定分区键。分区键不能是表列的名称。 [...]

只需重命名您的分区,它应该可以工作。

【讨论】:

谢谢!确实有效,下次我应该更仔细地阅读文档;)

以上是关于Partitioned by 给我创建外部表时重复的错误列的主要内容,如果未能解决你的问题,请参考以下文章

hive创建表的时候没有partitioned by能否在创表之后添加分区

带有 USING 和 PARTITIONED BY 子句的 spark hive 创建表的有效语法是啥?

hive建表时partitioned分区字段类型只能用string吗?可以用其他的字段类型吗?

hive查询分区元数据,PARTITIONED BY

如何在“PARTITIONED BY”子句的括号之间以逗号分隔的tick中提取值

当您在 Hive 中使用 S3 位置创建外部表时,数据何时传输?