Spark JavaRDD vs JavaPairRDD?



我是Spark的新手,我正在努力了解两个JavaRDD与JavaPairRDD之间的区别,以及如果我将JavaRDD转换为JavaPairRD ,这个操作有多重

JavaRDD<Tuple2<String, String>> myRdd // This is my JavaRDD
JavaPairRDD<String, String> pairRDD = JavaPairRDD.fromJavaRDD(myRdd);

这是一个区别,因为一些操作(aggregateByKeygroupByKey等(需要有一个Key来分组,然后有一个值放入分组结果中。JavaPairRDD用于向开发人员声明需要密钥的合同。

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

看看他们的javadocs,看看每个都可以使用的函数。

JavaRDD

JavaPairRDD

此外,将一个转换为另一个应该很快。这将是一个狭窄的转换,因为每一行都被转换为另一行,并且不需要通过网络发送数据。通常,您的性能将主要取决于您所做的广泛转换,在这些转换中,必须在节点之间发送数据,以便在同一工作线程上用相同的键并置行。

最新更新