我有一个JavaRDD<Tuple2<String, String>>
,需要将其转换为JavaPairRDD<String, String>
。目前,我正在通过简单地编写仅按原样返回输入元组的映射函数来做到这一点。但我想知道是否有更好的方法?
JavaPairRDD.fromJavaRDD(rdd) 是解决方案之一
对于反向转换,这似乎有效:
JavaRDD.fromRDD(JavaPairRDD.toRDD(rdd), rdd.classTag());
试试这个例子:
JavaRDD<Tuple2<Integer, String>> mutate = mutateFunction(rdd_world); //goes to a method that generates the RDD with a Tuple2 from a rdd_world RDD
JavaPairRDD<Integer, String> pairs = JavaPairRDD.fromJavaRDD(mutate);
试试这个将JavaRDD转换为JavaPairRDD。对我来说,它工作得很好。
JavaRDD<Sensor> sensorRdd = lines.map(new SensorData()).cache();
// transform data into javaPairRdd
JavaPairRDD<Integer, Sensor> deviceRdd = sensorRdd.mapToPair(new PairFunction<Sensor, Integer, Sensor>() {
public Tuple2<Integer, Sensor> call(Sensor sensor) throws Exception {
Tuple2<Integer, Sensor> tuple = new Tuple2<Integer, Sensor>(Integer.parseInt(sensor.getsId().trim()), sensor);
return tuple;
}
});
或者,
您可以在org.apache.spark.api.java.JavaRDD
实例上调用mapToPair(..)
。