我正在尝试分析提交到我的群集的pyspark作业。此pyspark PR(https://github.com/apache/spark/pull/2556)表示sc.dump_profiles(path)
是命令。我尝试将配置文件输出转储到hadoop hdfs:///user/username/filename
,以及本地file:///home/username/filename
和/home/username/filename
。作业完成但配置文件永远不会出现。
代码基于此SO问题(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 :(得分:0)
三个不同的问题:
dump_profiles
使用标准的Python编写器,因此您需要POSIX兼容的文件系统才能在此处使用它。除非使用FUSE安装,否则HDFS不会执行。dump_profiles
中提交代码时,将使用驱动程序节点本地的路径,该路径将是群集上的任意节点。如果您无权访问POSIX兼容的DFS,您可以在应用程序中读取转储并使用其中一个可用的Python客户端将其推送到HDFS,或者将其推送到S3存储桶等。
更麻烦的解决方案是使用SparkFiles
(SparkContext.addFile
)分发它,用texFile
读取并写入。