【发布时间】:2021-09-07 09:15:36
【问题描述】:
关于如何在 Apache Spark 作业中获取 Spark 执行程序 ID 的小问题。
我有一段非常简单的代码:
final Dataset<Row> rowDataSet = sparkSession.read()[...].load();
final Dataset<String> stringDataSet = rowDataSet
.map(
(MapFunction<Row, String>) row ->
doSomeTransformationFromRowToStringUsingSparkExecutorID(row, SparkEnv.executorId()), Encoders.STRING()
);
stringDataSet.show();
问题是关于 doSomeTransformationFromRowToStringUsingSparkExecutorID 方法的。
此方法需要正在处理的行的 spark executor ID,以便进行一些转换。
由于需要Spark executor ID,所以我使用了官方文档中的SparkEnv.executorId()。
不幸的是,上面的方法不起作用,因为Non-static method 'executorId()' cannot be referenced from a static context
SparkEnv.executorId() 在这种情况下甚至是获取执行者 ID 的好方法吗?
如果是,请问如何解决这个非静态方法 'executorId()' 的问题?
如果不是,请问获取执行者 ID 的最佳选择是什么?
谢谢
【问题讨论】:
标签: java apache-spark