【发布时间】: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