我们正在尝试获取Spark为给定查询生成的逻辑计划(不要与 physical 计划混淆)。根据Spark文档here的介绍,您应该可以使用scala命令来检索此内容:
df.explain(true)
或在带有示例代码的sparklyr中:
spark_version <- "2.4.3"
sc <- spark_connect(master = "local", version = spark_version)
iris_sdf <- copy_to(sc, iris)
iris_sdf %>%
spark_dataframe %>%
invoke("explain", T)
此命令运行,但仅在RStudio中返回NULL
。我的猜测是sparklyr不会检索打印到控制台的内容。有没有其他方法可以使用sparklyr检索逻辑计划?使用dplyr::explain([your_sdf])
易于获得物理计划,但是不会返回用于创建物理计划的逻辑计划。
答案 0 :(得分:0)
看起来您可以通过以下方式获得此信息:
iris_sdf %>%
spark_dataframe %>%
invoke("queryExecution") %>%
invoke("toString") %>%
cat()