【发布时间】: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
的 RDD,这很奇怪。明天我会对此进行更多调查。 -
感谢 zero323 和 @eliasah,我重新检查了 Java API,函数 createDataFrame 不接受参数 JavaPairRDD
。这是我的错。非常感谢,我会尝试从 JavaPairRDD 转换为 JavaRDD :D
标签: java apache-spark spark-dataframe