JavaPairRDD到Apache Spark中的数据帧

JavaPairRDD到Apache Spark中的数据帧,java,apache-spark,spark-dataframe,Java,Apache Spark,Spark Dataframe,我有一些文档文件,我尝试读取数据,然后使用zipWithIndex()函数压缩索引,如下所示: JavaRDD<String> rawTextRDD = sc.textFile("demo.txt"); JavaPairRDD<String, Long> zipIndex = rawTextRDD.zipWithIndex(); 函数createDataFrame不接受参数zipIndex(TextId是一个具有2个属性的类:String text和in

我有一些文档文件,我尝试读取数据,然后使用zipWithIndex()函数压缩索引,如下所示:

    JavaRDD<String> rawTextRDD = sc.textFile("demo.txt");
    JavaPairRDD<String, Long> zipIndex = rawTextRDD.zipWithIndex();
函数createDataFrame不接受参数zipIndex(TextId是一个具有2个属性的类:String text和int docId)

我还有一个Scala代码,它运行得很好。请参阅:

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

如果有解决办法的话。请帮我解决。谢谢,试试这个:DataFrame docDF=sqlContext.createDataFrame(zipIndex.values(),TextId.class)

您在这里试图做什么
sqlContext.createDataFrame(zipIndex,TextId.class)?我看不出它有什么理由接受zipIndex
。这是一个
javapairdd
而不是
JavaRDD
@eliasah,我认为这是简单的类型不匹配,
zipIndex
应该映射到
JavaRDD
,但我懒得检查:)你怎么看?@zero323我试过检查它。JavaAPI让我从rawTextRDD中获取rdd来创建元组的rdd,这很奇怪。明天我将对此进行更多的研究。感谢zero323和@eliasah,我已经重新检查了Java API,函数createDataFrame不接受参数javaPairdd。这是我的错。非常感谢,我将尝试从javapairdd转换为JavaRDD:DIt可以很好地解释为什么这个更改可以解决这个问题。
val rawTextRDD = sc.textFile("demo.txt")
val docDF = rawTextRDD.zipWithIndex.toDF("text", "docId")