繁体   English   中英

Spark:JavaRDD <Tuple2> 到JavaPairRDD &lt;&gt;

[英]Spark: JavaRDD<Tuple2> to JavaPairRDD<>

我有一个JavaRDD<Tuple2<String, String>> ,需要将其转换为JavaPairRDD<String, String> 目前我只是通过编写map函数来实现它,它只返回输入元组。 但我想知道是否有更好的方法?

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(..)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM