2014-11-19 6 views
9

मेरे पास JavaRDD<Tuple2<String, String>> है और इसे JavaPairRDD<String, String> में बदलने की आवश्यकता है। वर्तमान में मैं बस नक्शा फ़ंक्शन लिखकर ऐसा कर रहा हूं जो इनपुट टुपल को बस देता है। लेकिन मुझे आश्चर्य है कि क्या कोई बेहतर तरीका है?स्पार्क: जावाआरडीडी <Tuple2> जावापेयरआरडीडी <>

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); 
+0

ठीक है, तो जावा में कोई बेहतर तरीका नहीं है, है ना? –

+2

'नया जावापेयरआरडीडी (जावावाड)'? – maasg

+0

हो सकता है .. मुझे अंततः PairJavaRDD.fromJavaRDD (rdd) –

उत्तर

10

JavaPairRDD.fromJavaRDD (आरडीडी) समाधान

में से एक
+0

जावाआरडीडी <स्मार्टबिल्डिंगन्यू> बिल्डिंगआरडीडी = जेएससीस्पर्क कॉन्टेक्स्ट() समानांतर (सूची स्मारक बिल्डिंग); मैं इस जावाआरडीडी पर फिर से शुरू करना चाहता हूं, क्या आप मेरी मदद कर सकते हैं। SmartBuildingNew एक POJO class.jsc JavaStreamingContext ऑब्जेक्ट है –

1

यह उदाहरण आज़माएं है।

1

वैकल्पिक रूप से आप org.apache.spark.api.java.JavaRDD के अपने उदाहरण पर mapToPair(..) कॉल कर सकते हैं:

3

रिवर्स रूपांतरण के लिए, यह काम करने के लिए लगता है:

JavaRDD.fromRDD(JavaPairRDD.toRDD(rdd), rdd.classTag()); 
2

इस JavaPairRDD में JavaRDD को बदलने की कोशिश करें। मेरे लिए यह पूरी तरह से काम कर रहा है।

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; 
    } 
}); 
संबंधित मुद्दे