【问题标题】:Get unique words from Spark Dataset in Java从 Java 中的 Spark 数据集中获取唯一词
【发布时间】:2017-05-31 19:21:39
【问题描述】:

我正在使用 Apache Spark 2 来标记一些文本。

Dataset<Row> regexTokenized = regexTokenizer.transform(data);

它返回字符串数组。

Dataset<Row> words = regexTokenized.select("words");

示例数据如下所示。

+--------------------+
|               words|
+--------------------+
|[very, caring, st...|
|[the, grand, cafe...|
|[i, booked, a, no...|
|[wow, the, places...|
|[if, you, are, ju...|

现在,我想获得所有独特的单词。我尝试了几个过滤器、flatMap、map 函数和 reduce。我无法弄清楚,因为我是 Spark 的新手。

【问题讨论】:

    标签: java apache-spark apache-spark-sql spark-dataframe


    【解决方案1】:

    根据@Haroun Mohammedi 的回答,我能够在 Java 中找到答案。

    Dataset<Row> uniqueWords = regexTokenized.select(explode(regexTokenized.col("words"))).distinct();
    uniqueWords.show();
    

    【讨论】:

      【解决方案2】:

      我来自 scala,但我相信 Java 中也有类似的方法。

      我认为在这种情况下,您必须使用 explode 方法才能将您的数据转换为 Dataset 的单词。

      这段代码应该会给你想要的结果:

      import org.apache.spark.sql.functions.explode
      val dsWords = regexTokenized.select(explode("words"))
      val dsUniqueWords = dsWords.distinct()
      

      爆炸方法请参考official documentation

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2017-04-03
        • 2018-03-23
        • 1970-01-01
        • 1970-01-01
        • 2017-01-24
        • 1970-01-01
        • 1970-01-01
        • 2017-10-08
        • 2012-11-05
        相关资源
        最近更新 更多