我正在通过
读取数据glueContext.create_data_frame.from_catalog(database = "db", table_name = "ta")
从s3桶上的parquet文件。不幸的是,似乎桶包含一个非拼花文件(last_ingest_partition
),导致以下错误:An error occurred while calling o92.getDataFrame. s3://cdh/measurements/ta/last_ingest_partition is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [49, 45, 49, 50]
是否有可能从读取中排除该文件?我已经试过了
glueContext.create_data_frame.from_catalog(database = "db", table_name = "ta", additional_options={"exclusions" : "["**last_ingest_partition""})
但这对我不起作用。
以下是我的发现和解决我的问题的方法:
- 当我将代码切换到
create_dynamic_frame.from_catalog
而不是create_data_frame.from_catalog
并添加.toDF()
之后,一切都工作得很好。 - 对于
create_dynamic_frame
,我也可以使用排除作为额外的选项:.create_dynamic_frame.from_catalog(database = "testdb1", table_name = "cxexclude",additional_options={"exclusions": "["**{json,parquet}**"]"})
- 对于
create_data_frame class
,有限制:Spark DataFrame分区过滤不起作用。