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")
如果有任何解决方案。请帮我解决。谢谢
答
试试这个:DataFrame docDF = sqlContext.createDataFrame(zipIndex.values(),TextId.class);
+0
可能很好解释为什么此更改可以解决问题。 – TravisEz13
你在这里做什么'sqlContext.createDataFrame(zipIndex,TextId.class);'? – eliasah
我没有看到任何理由,为什么它会接受'zipIndex'。它是'JavaPairRDD'而不是'JavaRDD '。 –
zero323
@eliasah我认为这是简单的类型不匹配和'zipIndex'应该映射到'JavaRDD',但我懒惰检查:)你怎么看? –
zero323