【发布时间】:2017-11-14 11:06:10
【问题描述】:
我正在尝试创建 AWS Glue ETL 作业,它将存储在 S3 中的 parquet 文件中的数据加载到 Redshift 表中。 Parquet 文件是使用带有“简单”文件模式选项的 pandas 写入到 S3 bucked 中的多个文件夹中的。 布局如下所示:
s3://bucket/parquet_table/01/file_1.parquet
s3://bucket/parquet_table/01/file_2.parquet
s3://bucket/parquet_table/01/file_3.parquet
s3://bucket/parquet_table/01/file_1.parquet
s3://bucket/parquet_table/02/file_2.parquet
s3://bucket/parquet_table/02/file_3.parquet
我可以使用 AWS Glue Crawler 在 AWS Glue 目录中创建一个表,并且可以从 Athena 查询该表,但是当我尝试创建将同一个表复制到 Redshift 的 ETL 作业时它不起作用。
如果我抓取单个文件或抓取一个文件夹中的多个文件,它可以工作,只要涉及多个文件夹,我就会收到上述错误
AnalysisException: u'Unable to infer schema for Parquet. It must be specified manually.;'
如果我使用“hive”而不是“简单”架构,则会出现类似问题。然后我们有多个文件夹以及抛出的空镶木地板文件
java.io.IOException: Could not read footer: java.lang.RuntimeException: xxx is not a Parquet file (too small)
对于使用 AWS Glue(ETL 和数据目录)时如何读取 Parquet 文件并将其结构化到 S3 中是否有一些建议?
【问题讨论】:
-
您可以使用红移光谱直接处理您的镶木地板文件吗?
-
我也遇到了同样的问题。你想清楚了吗?
-
@rileyss 不幸的是没有。后来我没有玩弄它。这在当时是一个考验。
标签: amazon-web-services apache-spark parquet aws-glue