RDD 到 JavaRDD 转换的性能影响
Performance Impact of RDD to JavaRDD conversion
我有类似这样的代码,我想使用 JavaRDD 而不是 RDD。所以,我在这里做转换。当我处理 GB 数据时,我想知道这种转换对性能的影响。
RDD<String> textFile = sc.textFile(filePath, 2);
JavaRDD<String> javaRDD = textFile.toJavaRDD();
这个变宽还是变窄?
JavaRDD 和 RDD 有什么区别?
没有显着的性能损失 - JavaRDD
是 RDD
的简单包装,只是为了让 Java 代码的调用更加方便。它持有原始 RDD
作为其成员,并在任何方法调用时调用该成员的方法,例如(来自 JavaRDD.scala):
def cache(): JavaRDD[T] = wrapRDD(rdd.cache())
wrapRDD
归结为 new JavaRDD[T](rdd)
之类的东西,所以唯一的性能损失是为每个方法调用创建一个瘦 Java 对象,但这完全可以忽略不计,因为它不是每次都完成的RDD 中的元素,但对整个对象一次。
我有类似这样的代码,我想使用 JavaRDD 而不是 RDD。所以,我在这里做转换。当我处理 GB 数据时,我想知道这种转换对性能的影响。
RDD<String> textFile = sc.textFile(filePath, 2);
JavaRDD<String> javaRDD = textFile.toJavaRDD();
这个变宽还是变窄? JavaRDD 和 RDD 有什么区别?
没有显着的性能损失 - JavaRDD
是 RDD
的简单包装,只是为了让 Java 代码的调用更加方便。它持有原始 RDD
作为其成员,并在任何方法调用时调用该成员的方法,例如(来自 JavaRDD.scala):
def cache(): JavaRDD[T] = wrapRDD(rdd.cache())
wrapRDD
归结为 new JavaRDD[T](rdd)
之类的东西,所以唯一的性能损失是为每个方法调用创建一个瘦 Java 对象,但这完全可以忽略不计,因为它不是每次都完成的RDD 中的元素,但对整个对象一次。