2016-04-29 26 views
0

我有堆列表中的鍵,值對列表((A,1),(B,2),(C,3))在堆內存中。我如何將這個列表並行化來創建一個JavaPairRDD? Scala中: VAL對= sc.parallelize(列表((A,1),(B,2),(C,3)) 同樣,是否有任何方式與Java API如何在Apache Spark Java API中將鍵值對列表並行化爲JavaPairRDD?

+0

這個工作它是否發生,你RFTM? – eliasah

+0

我參考了手冊。我知道如何用scala和python來完成它。有沒有辦法用java做它? –

回答

1

我找到了答案。第一店JavaRDD中的元組列表,然後將其轉換爲JavaPairRDD。

List<Tuple2> data = Arrays.asList(new Tuple2("panda", 0),new Tuple2("panda", 1)); 
    JavaRDD rdd = sc.parallelize(data); 
    JavaPairRDD pairRdd = JavaPairRDD.fromJavaRDD(rdd); 

看一看這個answer

0

並行化集合?通過調用現有的集合JavaSparkContext的並行化方法在你的驅動程序中創建的。集合的元素被複制,從而形成可並行操作的分佈式數據集。

List data = ......; 
JavaRDD rdd = sc.parallelize(data); 
+0

通過使用上述行,您只能存儲不是鍵值對的元素。而且我正嘗試創建JavaPairRDD而不是JavaRDD –

+1

雖然此代碼可能會回答問題,但提供 關於_why_和/或_how_的其他上下文會回答這個問題將顯着提高其長期值 。請[編輯]你的答案,添加一些解釋。 –

+0

@SandeepVeerlapati如果你的列表類型是元組,我認爲spark會創建pairedRDD – banjara

0
Convert Tuple into List with below code snippet. 
Tuple2<Sensor, Integer> tuple = new Tuple2<Sensor, Integer>(arg0._2, 1); 
       List<Tuple2<Sensor, Integer>> list = new ArrayList<Tuple2<Sensor, Integer>>(); 
       list.add(tuple); 
1

,我可以看到我

sc.parallelizePairs(Arrays.asList(new Tuple2("123","123"))); 
相關問題