AWS Redshift Spectrum 十进制类型读取 parquet double 类型

Posted

技术标签:

【中文标题】AWS Redshift Spectrum 十进制类型读取 parquet double 类型【英文标题】:AWS Redshift Spectrum decimal type to read parquet double type 【发布时间】:2019-09-27 22:49:50 【问题描述】:

我有由 Pandas(pyarrow) 编写的镶木地板文件,其中包含 Double 类型的字段。 以下是镶木地板架构:

message schema 
  optional binary domain (STRING);
  optional binary type;
  optional binary country;
  optional binary region;
  optional binary country_code (STRING);
  optional int64 date (TIMESTAMP(MILLIS,true));
  optional double visits;
  optional double average_visit_duration;

问题: 我使用 Redshift Spectrum 创建外部表来读取这些 parquet 中的数据。 表架构:

CREATE EXTERNAL TABLE spectrum.similarweb_daily_current(
  domain varchar(200), 
  type varchar(200), 
  country varchar(200), 
  region varchar(200), 
  country_code varchar(200), 
  visits decimal(38,37), 
  average_visit_duration decimal(38,37))
STORED as PARQUET
LOCATION
  's3://XXX'

在进行简单的选择查询时,会显示模式不兼容 => Double vs Decimal 的错误。 有人知道如何解决吗?

我做过的研究: 在 Pandas/pyarrow 上,写入镶木地板时,我似乎无法将架构调整为十进制。 在 Redshift 上,Double 类型不支持外部表(谱)

【问题讨论】:

您是否使用 Glue 进行编目? Glue 说的类型是什么? 【参考方案1】:

解决了这个问题。 在镶木地板中使用 Redshift“双精度”类型进行双精度。

【讨论】:

以上是关于AWS Redshift Spectrum 十进制类型读取 parquet double 类型的主要内容,如果未能解决你的问题,请参考以下文章

从 AWS Glue 表到 RedShift Spectrum 外部表的日期字段转换

如何使用 AWS RedShift Spectrum 为 S3 存储建模以进行查询

AWS Spectrum 扫描错误压缩文件意外结束

Redshift Spectrum 为查询扫描的数据大小

如何使用 Psycopg2 在 Redshift Spectrum 中添加分区 -

Redshift Spectrum 使用两个日期字段对表进行分区