【问题标题】:Get distinct words in a Spark DataFrame column在 Spark DataFrame 列中获取不同的单词
【发布时间】:2021-04-13 06:43:10
【问题描述】:

我有一个这样的 df

val df2 = spark.createDataFrame(
  Seq(
    (0, "this is a sentence"),
    (1, "And another sentence")
    )
).toDF("num", "words")

我想在此列中获得不同的单词,例如

val vocab = List("this", "is", "a", "sentence", "And", "another")

实现此目的的 scala/spark 式方法是什么?

PS 我知道我可以使用 for 循环等来解决这个问题,但我正在努力在函数式编程方面做得更好,更具体地说是 spark 和 scala。

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    这是一个非常愚蠢的答案:

    import spark.implicits._
    
    df2
      .as[(Int, String)]
      .flatMap { case (_, words) => words.split(' ') }
      .distinct
      .show(false)
    

    我想这就是你想要的?

    +--------+
    |value   |
    +--------+
    |sentence|
    |this    |
    |is      |
    |a       |
    |And     |
    |another |
    +--------+
    

    还是在包含所有不同单词的单行之后更多?

    (这也是我第一次堆栈溢出答案,所以请善待

    【讨论】:

    • 谢谢。您对我如何将其作为列表有任何想法吗?
    • 当然!如果你有一个Dataset[A],你可以做.collect().toList 把它变成一个List[A]
    猜你喜欢
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多