【发布时间】:2021-06-22 04:07:46
【问题描述】:
我是 Spark 的新手,我知道 Spark 通常会序列化函数并将其发送给所有执行程序,然后处理 HDFS 中可用的数据块。但是如果我有以下代码,
Random random = new Random(); //statement A
int randomValue = random.nextInt(); //statement B
JavaPairRDD<String, Integer> pairRDD = mapRandom.mapToPair(s -> {
return new Tuple2<>(s, randomValue);
});
A, B 语句到底在哪里运行?当然,它不会在每个执行器中执行它,因为每个执行器都运行自己的 JVM,我发现每个值都映射到完全相同的randomValue。
这是否意味着这些语句A、B 在驱动程序中运行并被复制到所有执行程序?
【问题讨论】:
标签: java apache-spark rdd