首页 > 解决方案 > Spark JavaRDD 与 JavaPairRDD?

问题描述

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

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

JavaPairRDD<String, String> pairRDD = JavaPairRDD.fromJavaRDD(myRdd);

标签: apache-sparkrdd

解决方案


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

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

查看他们的 javadocs 以了解每个可用的功能。

JavaRDD

Java对RDD

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


推荐阅读