我知道有从 Dataproc 集群访问 Spark作业驱动程序输出和Hadoop 作业的答案,以及Google Cloud Logging 中 Dataproc Spark 作业的输出。谢谢这些。
但是,我也有兴趣查看不完整的Spark 应用程序的日志,例如交互式pyspark-shell
或spark-shell
会话——两者都通过:
- 使用相同的 Web 界面,以及可能
- 访问原始会话输出(本地 fs 或 hdfs 上的日志文件?)
在 Spark shell 会话期间,虽然我可以将会话视为不完整的应用程序,但当我在 REPL 中执行命令时,UI 没有跨Jobs、Stages和Tasks选项卡提供此类信息。这可以很容易地复制,如:
# Launch Dataproc cluster
>> gcloud beta dataproc clusters create $DATAPROC_CLUSTER_NAME
# SSH to master node:
>> gcloud compute ssh "root@$DATAPROC_CLUSTER_NAME-m"
# Launch a Spark shell (e.g., Python)
>> pyspark
我可以将 Spark 会话视为一个不完整的应用程序(如上所述),并且可以执行基本的 Spark 作业(带有collect
操作),例如:
>>> rdd = sc.parallelize([1, 2, 3, 4, 5, 6])
>>> rdd2 = rdd.map(lambda x: x + 1)
>>> rdd2.collect()
[2, 3, 4, 5, 6, 7]
>>> rdd2.persist()
PythonRDD[1] at collect at <stdin>:1
但这会导致任何Jobs、Stages或Storage选项卡中没有任何信息:请参阅 Spark Job History UI screen grab (blank)。
需要强调的是:但是,当通过 Dataproc API 提交作业时,这些选项卡会显示所有预期的作业历史记录。
关于我可以从 Spark shell 会话中访问此类输出/作业历史记录的任何提示?提前谢谢了。:)