2017-01-17 141 views
1

我正在嘗試配置提交到羣集的pyspark作業。這pyspark公關(https://github.com/apache/spark/pull/2556)表示sc.dump_profiles(path)是命令。我試圖將配置文件輸出轉儲到hadoop hdfs:///user/username/filename,本地file:///home/username/filename/home/username/filename。工作完成但配置文件從不出現。pyspark的配置文件缺少輸出

的代碼是基於這太問題(How to profile pyspark jobs),和sc.show_profiles()確實在交互模式下工作包括--conf spark.python.profile=true時。

from pyspark import SparkContext, SparkConf 
import logging 

if __name__ == "__main__": 
    logging.getLogger("py4j").setLevel(logging.ERROR) 
    conf = SparkConf().setAppName("profile") 
    sc = SparkContext(conf=conf) 

    rdd = sc.parallelize(range(100)).map(str) 
    rdd.count() 

    sc.show_profiles() 
    sc.dump_profiles("hdfs:///user/username/python_profiled") 

我提交作業這樣/opt/spark/bin/spark-submit --verbose --conf spark.python.profile=true --master yarn --deploy-mode cluster --queue production --num-executors 4 test_profile.py

如何格式化path獲取配置文件輸出任何指針?

回答

0

三種不同的問題:

  • dump_profiles使用標準的Python作家所以你需要POSIX兼容的文件系統,在這裏使用它。除非使用FUSE安裝,否則HDFS不會執行。
  • Python文件實用程序希望文件路徑不是URI。你顯示的代碼應該拋出異常。
  • 在集羣模式下提交您的代碼時dump_profiles將使用驅動程序節點的本地路徑,該節點將成爲您的集羣上的任意節點。

如果您無權訪問POSIX兼容的DFS,則可以讀取應用程序中的轉儲並使用其中一個可用Python客戶端將其推送到HDFS,或將其推送到S3存儲桶之類的東西。

一些更繁瑣的解決方案是使用SparkFilesSparkContext.addFile)分發它,使用texFile來讀取並寫入。