Hive 在基于S3中的拼花文件在Athena中创建外部表时,如何重命名列?

Hive 在基于S3中的拼花文件在Athena中创建外部表时,如何重命名列?,hive,parquet,amazon-athena,Hive,Parquet,Amazon Athena,在基于S3中的拼花文件在Athena中创建外部表时,有人知道如何重命名列吗 我试图加载的拼花地板文件在s3结构中既有一个名为export_date的列,也有一个export_date分区。 示例文件路径是:'s3://bucket\ux/path/to/data/export\u date=2020-08-01/platform=platform\u a' CREATE EXTERNAL TABLE `user_john_doe.new_table`( `column_1` string,

在基于S3中的拼花文件在Athena中创建外部表时,有人知道如何重命名列吗

我试图加载的拼花地板文件在s3结构中既有一个名为export_date的列,也有一个export_date分区。
示例文件路径是:
's3://bucket\ux/path/to/data/export\u date=2020-08-01/platform=platform\u a'

CREATE EXTERNAL TABLE `user_john_doe.new_table`(
  `column_1` string,
  `export_date` DATE,
  `column_3` DATE,
  `column_4` bigint,
  `column_5` string)
PARTITIONED BY (
  `export_date` string,
  `platform` string)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
LOCATION
  's3://bucket_x/path/to/data'
TBLPROPERTIES (
  'parquet.compression'='GZIP')
;
因此,我想做的是将export_date列重命名为export_date_exp。AWS文档表明:

通过索引读取拼花地板,这将允许您重命名 列,则必须使用parquet.column.index.access创建表 SerDe属性设置为true

但以下代码不会加载“导出日期”列中的任何数据:

CREATE EXTERNAL TABLE `user_john_doe.new_table`(
  `column_1` string,
  `export_date_exp` DATE,
  `column_3` DATE,
  `column_4` bigint,
  `column_5` string)
PARTITIONED BY (
  `export_date` string,
  `platform` string)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
WITH SERDEPROPERTIES ( 'parquet.column.index.access'='true')
LOCATION
  's3://bucket_x/path/to/data'
TBLPROPERTIES (
  'parquet.compression'='GZIP')
;
已提出此问题,但未收到答复:

我再次询问,因为文件明确表示这是可能的


作为旁注:在我的特定用例中,我不能加载export_date列,因为我了解到按名称阅读拼花地板并不需要加载每一列。在我的例子中,我不需要export_date列,因此这避免了与分区名称的冲突。

但是您的侧注中不是已经有了答案吗?如果你没有指定导出日期作为一列,雅典娜不应该正确地阅读该列?我测试了它并能够重命名一列,但是我在列顺序上遇到了问题。您是否检查了底层拼花文件是否具有完全相同的列顺序&没有其他列?@PhilippJohannis在本例中,我可以省略列,并加载数据。我认为这是一种变通办法,而不是解决办法。在大多数情况下,我无法删除整个列。我很想看看你用来让它工作的代码。是的,底层拼花文件的列顺序相同。我刚才使用了
SHOW CREATE TABLE
来显示一个现有的表(也基于拼花),重命名了一个列并添加了serdeproperty值。在您的情况下,您总是看到
NULL
?如果特定列之后的所有列仍然正确填充并且具有值,那么这可能就是事实?为了进行更深入的分析,我建议下载一个拼花地板文件,并使用类似于调查文件和检查列是否为空的工具进行检查。