为Parquet文件配置Pushdown Predicate时遇解析错误求助
问题分析与解决
核心原因
你遇到的错误是因为谓词下推(predicate pushdown)仅能作用于Parquet文件的分区列,但当前你的Parquet文件没有设置任何分区列(错误信息里的分区列是[]),而你指定的column1='country-code'并非分区列,所以系统无法解析这个下推条件。
解决步骤
- 如果你的Parquet文件确实没有分区列,那不能用基于分区列的谓词下推优化,直接移除
push_down_predicate参数,改用读取后过滤的方式:# 先读取整个DynamicFrame dynamic_frame = o91.getDynamicFrame() # 读取后再过滤数据 filtered_frame = dynamic_frame.filter(lambda row: row["column1"] == "country-code") - 如果你的Parquet文件应该有分区列但实际没有,需要重新生成Parquet文件时按
column1分区,之后再使用谓词下推:# 假设原数据是df,按column1分区写入Parquet df.write.partitionBy("column1").parquet("s3://your-path/") # 之后读取时就可以用该列做谓词下推 dynamic_frame = o91.getDynamicFrame(push_down_predicate="column1='country-code'") - 确认你指定的
column1确实是分区列:检查Parquet文件的存储结构,分区列会以column1=xxx的目录形式存在,若没有这种目录结构,说明该列不是分区列。
内容的提问来源于stack exchange,提问作者Ajithkumar
相关产品推荐
相关产品推荐

