2015-10-18 36 views
3

我有一些文檔文件,我試圖讀取數據,然後用索引拉鍊使用zipWithIndex()函數如下:JavaPairRDD到數據幀中的Apache火花用java

JavaRDD<String> rawTextRDD = sc.textFile("demo.txt"); 
    JavaPairRDD<String, Long> zipIndex = rawTextRDD.zipWithIndex(); 

zipIndex的該值之後,含有JavaPairRDD鍵值對,看起來像[「這是美麗的圖片」,0],[「這是另一張圖片」,1]。

但現在,我想zipIndex轉換成數據幀使用:

DataFrame docDF = sqlContext.createDataFrame(zipIndex, TextId.class); 

功能createDataFrame不接受參數zipIndex(文本ID是2屬性的類:字符串文字和int的docId)。

我在斯卡拉也有一個代碼,它運行得非常好。請參考:

val rawTextRDD = sc.textFile("demo.txt") 
val docDF = rawTextRDD.zipWithIndex.toDF("text", "docId") 

如果有任何解決方案。請幫我解決。謝謝

+0

你在這裏做什麼'sqlContext.createDataFrame(zipIndex,TextId.class);'? – eliasah

+1

我沒有看到任何理由,爲什麼它會接受'zipIndex'。它是'JavaPairRDD '而不是'JavaRDD '。 – zero323

+0

@eliasah我認爲這是簡單的類型不匹配和'zipIndex'應該映射到'JavaRDD ',但我懶惰檢查:)你怎麼看? – zero323

回答

-1

試試這個:DataFrame docDF = sqlContext.createDataFrame(zipIndex.values(),TextId.class);

+0

可能很好解釋爲什麼此更改可以解決問題。 – TravisEz13