【问题标题】:JavaPairRDD to DataFrame in Apache Spark with javaJavaPairRDD 到 Apache Spark 中的 DataFrame 与 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&lt;String, Long&gt; 而不是JavaRDD&lt;TextId&gt;
  • @eliasah 我认为这是简单的类型不匹配,zipIndex 应该映射到JavaRDD&lt;TextId&gt;,但我懒得检查:) 你怎么看?
  • @zero323 我试图检查它。 Java API 让我从 rawTextRDD 获取 rdd 以创建 Tuple 的 RDD,这很奇怪。明天我会对此进行更多调查。
  • 感谢 zero323 和 @eliasah,我重新检查了 Java API,函数 createDataFrame 不接受参数 JavaPairRDD。这是我的错。非常感谢,我会尝试从 JavaPairRDD 转换为 JavaRDD :D

标签: java apache-spark spark-dataframe


【解决方案1】:

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

【讨论】:

  • 解释一下为什么此更改可以解决问题可能会很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 2015-09-20
  • 2015-10-05
相关资源
最近更新 更多