关于scala:存储Spark的dataframe的执行计划 | 珊瑚贝

Store execution plan of Spark′s dataframe


我目前正在尝试将 Spark 的数据帧的执行计划存储到 HDFS 中(通过 dataframe.explain(true) 命令)

我发现的问题是,当我使用 explain(true) 命令时,我可以通过命令行和日志查看输出,但是如果我创建一个文件(比如说 . txt) 与数据框的说明文件的内容将显示为空。

我认为该问题与 Spark 的配置有关,但我无法解决
在互联网上找到有关此的任何信息

(对于那些想了解更多关于使用解释功能执行数据帧的计划的人,请参阅 https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-sql-dataset-operators.html #解释)


if I create a file (let′s say a .txt) with the content of the dataframe′s explain

您究竟是如何尝试实现这一目标的?

explain 使用 println 将其结果写入控制台,并返回 Unit,如 Dataset.scala:

所示

1
2
3
4
5
6
7
8
def explain(extended: Boolean): Unit = {
  val explain = ExplainCommand(queryExecution.logical, extended = extended)
  sparkSession.sessionState.executePlan(explain).executedPlan.executeCollect().foreach {
    // scalastyle:off println
    r => println(r.getString(0))
    // scalastyle:on println
  }
}

因此,除非您重定向控制台输出以写入文件(以及打印到控制台的任何其他内容…),否则您将无法将 explain 的输出写入文件。


我发现的最佳方法是在运行作业时将输出重定向到文件。我使用了以下命令:

1
 spark-shell –master yarn -i test.scala > getlogs.log

我的 scala 文件有以下简单的命令:

1
2
3
val df = sqlContext.sql(“SELECT COUNT(*) FROM testtable”)
df.explain(true)
exit()

来源:https://www.codenong.com/45981710/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9695.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?