2017-08-31 18 views
1

我目前正在爲Spark's數據框的執行計劃存儲到HDFS(通過dataframe.explain(真)命令)的商店執行計劃Spark's數據框中

我發現的問題是,當我正在使用explain(true)命令,我能夠通過命令行和日誌查看輸出,但是如果我使用數據框的內容創建了一個文件(讓我們說一個.txt)該文件將顯示爲空。

我認爲這個問題涉及到星火的配置,但我無法 找到這個互聯網的任何信息

(誰想要使用說明看到更多關於dataframes的計劃執行功能請參閱https://jaceklaskowski.gitbooks.io/mastering-apache-spark/spark-sql-dataset-operators.html#explain

回答

1

如果我創建一個文件(let's說一個.txt)與dataframe's的內容解釋

如何準確你是否試圖做到這一點?

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 
    } 
} 

所以,除非你redirect the console output to write to your file(與任何其他一起打印到控制檯...) ,您將無法將explain的輸出寫入文件。

+0

謝謝你讓我知道,我現在更新的println因此將被打印到文件的通道並從那裏檢索內容 –

0

我發現的最佳方式是在運行作業時將輸出重定向到文件。我用下面的命令:

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

我的斯卡拉文件有以下簡單的命令:

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