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: Array[String]): 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()

相关推荐
凯子坚持 c13 分钟前
CANN 生态中的分布式训练利器:深入 `collective-ops` 项目实现高效多卡协同
分布式
岁岁种桃花儿23 分钟前
Kafka从入门到上天系列第一篇:kafka的安装和启动
大数据·中间件·kafka
Apache Flink44 分钟前
Apache Flink Agents 0.2.0 发布公告
大数据·flink·apache
永霖光电_UVLED1 小时前
打造更优异的 UVB 激光器
大数据·制造·量子计算
m0_466525291 小时前
绿盟科技风云卫AI安全能力平台成果重磅发布
大数据·数据库·人工智能·安全
晟诺数字人1 小时前
2026年海外直播变革:数字人如何改变游戏规则
大数据·人工智能·产品运营
惊讶的猫1 小时前
rabbitmq实践小案例
分布式·rabbitmq
vx_biyesheji00011 小时前
豆瓣电影推荐系统 | Python Django 协同过滤 Echarts可视化 深度学习 大数据 毕业设计源码
大数据·爬虫·python·深度学习·django·毕业设计·echarts
2501_943695332 小时前
高职大数据与会计专业,考CDA证后能转纯数据分析岗吗?
大数据·数据挖掘·数据分析
实时数据2 小时前
通过大数据的深度分析与精准营销策略,企业能够有效实现精准引流
大数据