java - Apache Spark:在 map reduce 管道中获取执行者 ID
问题描述
关于如何在 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 执行器 ID,所以我去使用SparkEnv.executorId()
在官方文档中找到的。
不幸的是,上面不起作用,因为Non-static method 'executorId()' cannot be referenced from a static context
在这种情况下,甚至是SparkEnv.executorId()
获取执行者 ID 的好方法吗?
如果是,请如何解决此非静态方法“executorId()”问题?
如果没有,请问获得执行人 ID 的最佳选择是什么?
谢谢
解决方案
根据文档 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();
推荐阅读
- javascript - JavaScript:返回包含您定位的标签的innerHTML?
- ms-access - 访问中的日期字段标准具有相等的年份
- powerbi - 以 PDF 文件导出的 Power BI 报表未显示完整数据
- c - 使用 strtok 时,多个分隔符如何影响我的程序?
- c++ - 对链表进行合并排序(分段错误)
- c - 我想用c语言制作一个简单的程序,通过从用户那里输入半径来计算圆的面积
- javascript - 如何在 Ember 中混淆 Javascript?
- flutter - 我需要使用某个库并进行一些更改
- java - fluttet 是否适用于最新的 jdk 版本?
- r - 当公式由字符串给出时如何运行回归?