JavaPairRDD到数据帧中的Apache火花用java

问题描述:

我有一些文档文件,我试图读取数据,然后用索引拉链使用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

试试这个:DataFrame docDF = sqlContext.createDataFrame(zipIndex.values(),TextId.class);

+0

可能很好解释为什么此更改可以解决问题。 – TravisEz13