Spark处理过程-案例数据清洗

( 一 ) 需求说明

准备十条符合包含用户信息的文本文件,每行格式为 姓名,年龄,性别,需要清洗掉年龄为空或者非数字的行 。

例如:

张三,25,男

李四,,女

王五,30,男

赵六,a,女

孙七,35,男

周八,40,女

吴九,abc,男

郑十,45,女

王十,50,男

李二,55,女

( 二 ) 思路分析
  1. 读入文件
  2. 对每一行数据进行分析
    1. 字段拆分,拆分出年龄这个字段
    2. 判断
      • 如果它不是数字或者缺失,则忽略这条数据
      • 否则保存

(三) 代码展示

import org.apache.spark.{SparkConf, SparkContext}

object DataCleaning {

def main(args: ArrayString): Unit = {

// 创建 SparkConf 对象

val conf = new SparkConf().setAppName("DataCleaning").setMaster("local\*")

// 创建 SparkContext 对象

val sc = new SparkContext(conf)

// 读取文本文件,创建 RDD

val inputFile = "input/file.txt"

val lines = sc.textFile(inputFile)

// 数据清洗操作

val cleanedLines = lines.filter(line => { // 使用filter算子

val fields = line.split(",")

if (fields.length == 3) {

val age = fields(1).trim

age.matches("\\d+")

} else {

false

}

})
// 输出清洗后的数据
cleanedLines.collect().foreach(println)

// 停止 SparkContext

sc.stop()

}

}

拓展:如何把清洗之后的数据保存到一个文件中。
可以使用coalesce(1)这个方法可以让结果全部保存在一个文件中。

代码如下:

val singlePartitionRDD = cleanedLines.coalesce(1)

// 保存清洗后的数据到文件

val outputPath = "path/to/your/output/file.txt"

singlePartitionRDD.saveAsTextFile(outputPath)

// 停止 SparkContext

sc.stop()

相关推荐
Easy_API11 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo11 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
微订校园外卖平台12 小时前
校园外卖平台选模板还是定制:架构、数据流与验收清单
大数据·架构·外卖系统·本地生活·微订
Eloudy14 小时前
Qwen2.5-14B-Instruct-AWQ 模型文件结构分析
大数据·elasticsearch·搜索引擎
重生之高冷汉堡包16 小时前
跨境电商运营团队如何安全交接店铺账号?多账号权限管理指南
大数据
玩AI的奶茶17 小时前
MiniMax H3 出 30 秒长片:显存账、拼接法和一次的成本
大数据·人工智能·ai·gpu算力·算力租赁
SelectDB17 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
爱签AI电子合同18 小时前
电子合同全维度实测与选型指南
大数据·人工智能
AI办公探索者18 小时前
从SaaS到本地部署:大模型推理成本优化与8888元私有化方案的技术解析
大数据·人工智能
做运维的阿瑞18 小时前
云项目可观测性与成本治理:告警、日志、Dashboard 与预算标签
大数据·云原生·云计算·terraform