JavaPairRDD 到 Apache Spark 中的 DataFrame 与 java
Posted
技术标签:
【中文标题】JavaPairRDD 到 Apache Spark 中的 DataFrame 与 java【英文标题】:JavaPairRDD to DataFrame in Apache Spark with java 【发布时间】:2015-10-18 17:25:01 【问题描述】:我有一些文档文件,我尝试读取数据,然后使用 zipWithIndex() 函数进行索引压缩:
JavaRDD<String> rawTextRDD = sc.textFile("demo.txt");
JavaPairRDD<String, Long> zipIndex = rawTextRDD.zipWithIndex();
zipIndex 的值之后是一个包含键值对的 JavaPairRDD,看起来像 ["This is the beautiful picture", 0], ["This is another picture", 1]。
但现在,我想使用以下方法将 zipIndex 转换为 DataFrame:
DataFrame docDF = sqlContext.createDataFrame(zipIndex, TextId.class);
函数 createDataFrame 不接受参数 zipIndex(TextId 是一个具有 2 个属性的类:String text 和 int docId)。
我在 Scala 中也有一段代码,它运行得非常好。请参考:
val rawTextRDD = sc.textFile("demo.txt")
val docDF = rawTextRDD.zipWithIndex.toDF("text", "docId")
如果有任何解决方案。请帮我解决。谢谢
【问题讨论】:
你想在这里做什么sqlContext.createDataFrame(zipIndex, TextId.class);
?
我看不出它有什么理由接受zipIndex
。这是JavaPairRDD<String, Long>
而不是JavaRDD<TextId>
。
@eliasah 我认为这是简单的类型不匹配,zipIndex
应该映射到JavaRDD<TextId>
,但我懒得检查:) 你怎么看?
@zero323 我试图检查它。 Java API 让我从 rawTextRDD 获取 rdd 以创建 Tuple试试这个:DataFrame docDF = sqlContext.createDataFrame(zipIndex.values(), TextId.class);
【讨论】:
解释一下为什么此更改可以解决问题可能会很好。以上是关于JavaPairRDD 到 Apache Spark 中的 DataFrame 与 java的主要内容,如果未能解决你的问题,请参考以下文章
在执行spar-sql程序中报错:java.lang.NoSuchMethodError: org.apache.spark.internal.Logging.$init$(Lorg/apache/s
JavaPairRDD 到 SPARK 中的数据集<Row>
通过操作 JavaPairRDD 的值 (Sum) 来转换 JavaPairRDD
Java Spark 如何将 JavaPairRDD<HashSet<String>, HashMap<String, Double>> 保存到文件中?