【问题标题】:Presto fails to import PARQUET files from S3Presto 无法从 S3 导入 PARQUET 文件
【发布时间】:2020-05-10 04:10:24
【问题描述】:

我有一个 presto 表,它基于 s3 的分区导入 PARQUET 文件,如下所示:

create table hive.data.datadump
( 
    tUnixEpoch varchar,
    tDateTime varchar,
    temperature varchar,
    series varchar,
    sno varchar,
    date date
    )
 WITH (
 format = 'PARQUET',
 partitioned_by = ARRAY['series','sno','date'], 
 external_location = 's3a://dev/files');

存储 parquet 文件的 S3 文件夹结构如下所示:

s3a://dev/files/series=S5/sno=242=/date=2020-1-23

分区从系列开始。

pyspark 中生成镶木地板文件的原始代码将所有架构都作为字符串类型,我试图将其作为字符串导入,但是当我在 Presto 中运行我的创建脚本时,它成功创建了表,但无法导入数据。

在运行中,

select * from hive.data.datadump;

我收到以下错误:

[Code: 16777224, SQL State: ]  Query failed (#20200123_191741_00077_tpmd5): The column tunixepoch is declared as type string, but the Parquet file declares the column as type DOUBLE[Code: 16777224, SQL State: ]  Query failed (#20200123_191741_00077_tpmd5): The column tunixepoch is declared as type string, but the Parquet file declares the column as type DOUBLE

你们能帮忙解决这个问题吗? 提前谢谢你!

【问题讨论】:

  • 您能否在您的列元数据中将tunixepoch 声明为double?然后会发生什么?
  • @PiotrFindeisen 当我将 tunixepoch 设为 double 时,会出现以下错误:[代码:16777224,SQL 状态:] 查询失败(#20200123_210133_00058_b3wvy):tunixepoch 列被声明为 double 类型,但 Parquet文件将列声明为 BINARY 类型
  • @PiotrFindeisen 它不断在 Binary 和 Double 之间切换错误。我已尝试提供两种数据类型,但似乎都不起作用。
  • 我看到你将讨论转移到Presto slack。让我们继续,因为这可能是一种更好的故障排除格式。

标签: amazon-s3 pyspark parquet presto


【解决方案1】:

我遇到了同样的问题,我发现这是由于我的源中的一条记录没有与它所抱怨的列匹配的数据类型造成的。我确信这只是数据。您需要捕获没有正确类型的确切记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2021-11-05
    • 2022-10-07
    • 2020-10-02
    • 2019-07-06
    相关资源
    最近更新 更多