Spark数据帧的存储执行计划



我当前正在尝试将Spark的DataFrame的执行计划存储到HDFS(通过dataframe.explain(true)命令)

我发现的问题是,当我使用" dimend(true)命令"时,我可以看到命令行和日志的输出,但是,如果我创建一个文件(让您说一个文件)。txt)带有dataframe的内容解释该文件将显示为空。

我相信这个问题与火花的配置有关,但我无法在Internet中找到有关此信息的任何信息

(对于那些想使用解释功能的数据框架执行的人,请参阅https://jaceklaskowski.gitbooks.io/mastering-apache-apache-spark/spark/spark-sql-dataset-operators.html#Explain)

如果我创建了一个用数据框的内容的文件(让您说的.txt)

您到底是如何实现这一目标的?

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

所示
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的输出写入文件。

<。

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

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

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

val df = sqlContext.sql("SELECT COUNT(*) FROM testtable")
df.explain(true)
exit()

相关内容

  • 没有找到相关文章

最新更新