gpt4 book ai didi

java - Spark中JavaRDD分区之间如何共享数据?

转载 作者:行者123 更新时间:2023-12-01 09:42:25 24 4
gpt4 key购买 nike

我有一些对象要在 apache Spark 中的分区之间共享。下面是我面临的代码片段和问题。

private static void processDataWithResult() throws IOException {

JavaRDD<Long> idRDD = createIdRDDUsingDb();
final MeasureReportingData measureReporingData = getMeasureReportingData(jobConfiguration);

resultRDD = idRDD.mapPartitions(new FlatMapFunction<Iterator<Long>, Boolean>() {
@Override
public Iterable<Boolean> call(Iterator<Long> idIterator) throws Exception {

MeasureReportingData mrd = measureReporingData;

final List<Boolean> dummyList = new ArrayList<>();

long minId = idIterator.next();

engine.processInBatch(minId, minId + BATCH_SIZE - 1);
return (Iterable<Boolean>) dummyList;
}
});

resultRDD.count();

}

我想将 measureReportingData 对象分发到所有分区?

我收到序列化错误,因为 MeasureReportingData 包含不可Serialized 的实例成员。该问题的模拟在这个问题中指定:How to serialize a Predicate<T> from Nashorn engine in java 8

还有其他方法可以在分区之间共享measureReportingData吗?

最佳答案

为了在机器之间共享数据,数据必须在源处序列化,通过网络传输,并在目的地反序列化。所以你不能传输不可序列化的对象。

如果 MeasureReportingData 不可序列化,您必须将其转换为可序列化对象,共享该对象,然后在函数内将其转换回 MeasureReportingData

关于java - Spark中JavaRDD分区之间如何共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38350424/

24 4 0