【发布时间】:2021-07-28 18:36:16
【问题描述】:
当您执行df.explain() 时,可以在物理计划中看到用于谓词下推的PushedFilters 作为字符串。我们可以使用df.queryExecution.simpleString 提取它,但我希望它为 JSON,因此我可以直接测试是否在 PushedFilters 中放入了某些内容,我该如何提取它?
例如来自 jacek laswoski 的 website 示例
cities.where('name === "Warsaw").queryExecution.executedPlan
res21: org.apache.spark.sql.execution.SparkPlan =
*Project [id#128L, name#129]
+- *Filter (isnotnull(name#129) && (name#129 = Warsaw))
+- *FileScan parquet [id#128L,name#129] Batched: true,
Format: ParquetFormat,
InputPaths: file:/Users/jacek/dev/oss/spark/cities.parquet,
PartitionFilters: [],
PushedFilters: [IsNotNull(name), EqualTo(name,Warsaw)],
ReadSchema: struct<id:bigint,name:string>
我希望能够提取PushedFilters: [IsNotNull(name), EqualTo(name,Warsaw)] 以进行我正在做的一些测试
【问题讨论】:
-
如果你想要 JSON,解析字符串,除非计划对象有获取该信息的 getter
-
是的,我基本上希望有一个吸气剂
标签: apache-spark