gpt4 book ai didi

java - Apache Spark : get the executor ID in the map reduce pipeline

转载 作者:行者123 更新时间:2023-12-02 02:00:11 24 4
gpt4 key购买 nike

关于如何在 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 执行器 ID,以便进行一些转换。

由于我需要Spark执行器ID,所以我使用了官方文档中的SparkEnv.executorId()

不幸的是,上面的方法不起作用,因为无法从静态上下文中引用非静态方法“executorId()”

在这种情况下,SparkEnv.executorId() 是获取执行程序 ID 的好方法吗?

如果是,请如何解决此非静态方法“executorId()”问题?

如果没有,获取执行者 ID 的最佳替代方法是什么?

谢谢

最佳答案

根据documentation SparkEnv 类具有 static 方法 get用于获取 SparkEnv 实例。在这种情况下,您可以调用 executorId()方法(不是静态的):

import org.apache.spark.SparkEnv

SparkEnv sparkEnv = SparkEnv.get();
String executorId = sparkEnv.executorId();
final Dataset<Row> rowDataSet = sparkSession.read()[...].load();
final Dataset<String> stringDataSet = rowDataSet
.map(
(MapFunction<Row, String>) row ->
doSomeTransformationFromRowToStringUsingSparkExecutorID(row, SparkEnv.get().executorId()), Encoders.STRING()
);
stringDataSet.show();

关于java - Apache Spark : get the executor ID in the map reduce pipeline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69085481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com