You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark Executor的Java Flight Recorder文件名如何添加Executor ID?

解决Spark Executor JFR录制文件名冲突问题

Spark支持在spark.executor.extraJavaOptions中使用特定占位符生成每个Executor独有的JFR文件名,解决多Executor写入同一文件的问题,具体如下:

正确的占位符格式

你之前尝试的格式有误,Spark仅识别**${EXECUTOR_ID}和${APP_ID}**这两种占位符,它们会在Executor启动时被自动替换为实际的Executor ID和应用ID。

具体配置示例

可以通过命令行提交或配置文件设置JFR参数:

命令行提交时配置

spark-submit \
  --conf spark.executor.extraJavaOptions="-XX:StartFlightRecording=filename=recording_${EXECUTOR_ID}_${APP_ID}.jfr,duration=30m" \
  # 其他提交参数...

Spark配置文件(spark-defaults.conf)中配置

spark.executor.extraJavaOptions -XX:StartFlightRecording=filename=recording_${EXECUTOR_ID}_${APP_ID}.jfr,duration=30m

配置后每个Executor会生成类似recording_1_app-202405201234.jfr的唯一文件,完全避免冲突。

额外优化

如果是多Worker节点集群,还可以加入${HOSTNAME}占位符,进一步确保跨节点的文件名唯一性:

filename=recording_${HOSTNAME}_${EXECUTOR_ID}_${APP_ID}.jfr

注意事项

  • 占位符必须严格使用${变量名}的格式,大小写不能出错(比如executor_id不会生效)。
  • 该特性从Spark 1.6版本开始支持,请确保你的Spark版本符合要求。

内容的提问来源于stack exchange,提问作者Sangy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 15:15:07