Spark JavaRDD与JavaPairRDD?

Har*_*der 1 apache-spark rdd

我是Spark的新手,我想了解两个JavaRDD与JavaPairRDD之间的区别,以及如果将JavaRDD转换为JavaPairRDD,此操作的繁重程度

JavaRDD<Tuple2<String, String>> myRdd // This is my JavaRDD

JavaPairRDD<String, String> pairRDD = JavaPairRDD.fromJavaRDD(myRdd);
Run Code Online (Sandbox Code Playgroud)

Rya*_*ier 7

之所以有区别,是因为某些操作(aggregateByKeygroupByKey等)需要一个Key进行分组,然后再将一个值放入分组结果中。JavaPairRDD可以在此处向开发人员声明需要的合同。

Regular JavaRDD可以用于不需要显式Key字段的操作。这些操作是对任意元素类型的通用操作。

看看他们的javadocs可以看到每个函数可用的功能。

JavaRDD

Java对RDD

同样,将一个转换为另一个应该很快。这将是一个狭窄的转换,因为每一行都将转换为另一行,并且不需要跨网络发送任何数据。通常,您的性能主要取决于您执行的广泛转换,在这些转换中,必须在节点之间发送数据以将行与同一工作线程上的同一键并置在一起。