调用from_catalog时根据名称排除文件



我正在通过

读取数据
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""})

但这对我不起作用。

以下是我的发现和解决我的问题的方法:

  1. 当我将代码切换到create_dynamic_frame.from_catalog而不是create_data_frame.from_catalog并添加.toDF()之后,一切都工作得很好。
  2. 对于create_dynamic_frame,我也可以使用排除作为额外的选项:.create_dynamic_frame.from_catalog(database = "testdb1", table_name = "cxexclude",additional_options={"exclusions": "["**{json,parquet}**"]"})
  3. 对于create_data_frame class,有限制:Spark DataFrame分区过滤不起作用。

最新更新