gpt4 book ai didi

scala - 如何在 Scala 中进行数据清理

转载 作者:可可西里 更新时间:2023-11-01 14:36:43 26 4
gpt4 key购买 nike

我刚刚在 Spark 上启动 Scala,所以我不确定我的问题是否可行,或者我应该求助于其他解决方案/工具:

我有一个用于字数统计和排序的文本文件,这里是 file .

  1. 我将文件加载到 HDFS
  2. 然后我在 Scala 中使用以下代码进行计数:

    val file = sc.textFile("hdfs://localhost:9000/Peter")
    val counts = file.flatMap(line => line.split(" ")).map(p => (p,1)).reduceByKey(_+_).sortByKey(true,1)
    counts.saveAsTextFile("Peter_SortedOutput6")
  3. 我通过 hdfs dfs -cat hdfs://localhost:9000/user/root/Peter_SortedOutput5/part-00000
  4. 在 hdfs 上检查了结果

为方便阅读,贴出部分结果:

((For,1) ((not,1) (1,8) (10,8) (11,8) (12,8) (13,8) (14,8) (15,7) (16,7) (17,7) (18,7) (19,6) (2,8) (20,5) (21,5) (22,4) (23,2) (24,2) (25,2) (3,8) (4,8) (5,8) (6,8) (7,8) (8,8) (9,8) (Abraham,,1) (According,1) (Amen.,4) (And,19) (As,5) (Asia,,1) (Babylon,,1) (Balaam,1) (Be,2) (Because,1)

首先,这确实不是我所期望的,我希望结果按计数的 desc 顺序显示。其次,有如下结果:

(God,25) (God's,1) (God,,9) (God,),1) (God.,6) (God:,2) (God;,2) (God?,1)

如何在拆分中进行一些清理,以便将这些事件归为一类(上帝,47)

非常感谢。

最佳答案

有一门类(class)BerkeleyX: CS105x Introduction to Apache Spark在 edx.org 上,由 Berkerly&Databricks 提供。其中一项作业是统计字数。

步骤是

  • 删除标点符号,将“[^A-Za-z0-9\s]+”替换为“”,或者不包含数字“[^A-Za-z\s]+”
  • 修剪所有空格
  • 降低所有单词

我们可以添加额外的步骤

  • 删除停用词

代码如下

import org.apache.spark.ml.feature.StopWordsRemover
import org.apache.spark.sql.functions.split

// val reg = raw"[^A-Za-z0-9\s]+" // with numbers

val reg = raw"[^A-Za-z\s]+" // no numbers
val lines = sc.textFile("peter.txt").
map(_.replaceAll(reg, "").trim.toLowerCase).toDF("line")
val words = lines.select(split($"line", " ").alias("words"))

val remover = new StopWordsRemover()
.setInputCol("words")
.setOutputCol("filtered")

val noStopWords = remover.transform(words)

val counts = noStopWords.select(explode($"filtered")).map(word =>(word, 1))
.reduceByKey(_+_)

// from word -> num to num -> word
val mostCommon = counts.map(p => (p._2, p._1)).sortByKey(false, 1)

mostCommon.take(5)

关于scala - 如何在 Scala 中进行数据清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com