首页 文章

AWS Glue ETL作业因AnalysisException失败:u 'Unable to infer schema for Parquet. It must be specified manually.;'

提问于
浏览
3

我正在尝试创建AWS Glue ETL Job,它将数据从存储在S3中的镶木地板文件加载到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 Job时它不起作用 .

如果我抓取一个文件或者我抓取一个文件夹中的多个文件,它会起作用,只要涉及多个文件夹,我就会得到上面提到的错误

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中构建它们的建议?

1 回答

  • -1

    Redshift不支持镶木地板格式 . Redshift Spectrum有 . 雅典娜还支持镶木地板格式 .

相关问题