scala - Spark Tokenize 整个 DataFrame 不是单行
问题描述
我有多个文本文件读入 Spark Dataframe(假设为单列)。我想使用 Tokenizer 但不是对每一行单独使用,而是对每一行使用。
例如要知道在所有文本(行)中出现次数最多的单词
+--------------------+--------------------+------+
| value| words|tokens|
+--------------------+--------------------+------+
|a b ... |[a, b, ... | 1072|
|a c ... |[a, c, ... | 1045|
所以代替上面的,我想要:
+--------------------+--------------------+------+
| value| words|tokens|
+--------------------+--------------------+------+
|a b c... |[a, b, c... | x |
我的相关代码:
val corpus = spark.read.text("...")
val tokenizer = new Tokenizer().setInputCol("value").setOutputCol("words")
val countTokens = udf { (words: Seq[String]) => words.length }
val tokenized = tokenizer.transform(corpus)
tokenized.select("value", "words")
.withColumn("tokens", countTokens(col("words"))).show()
解决方案
推荐阅读
- java-8 - 如何在 Java 8 中使用流转换 List 实例中的元素?
- javascript - 在使用 Chrome 进行分析时,React 的性能显着提高
- linux - Remove prefix from a LIST of files in bash
- c# - 如何为 ElasticSearch 中的索引设置 TTL
- excel - Excel VBA自动将分号更改为冒号
- node.js - “npm start”在 Windows 上不起作用,尽管它在 Linux 和 OSX 上工作。
- java - 如何使用随机类在数组列表中找不到选择号?
- fortran - fortran 中的构造函数
- java - Dagger 1 不会将 Java 类注入 Kotlin 活动
- java - Java - 从 Guava RangeMap 获取返回 null 而键存在于 Range 中