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()

相关推荐
苏州IT威翰德3 小时前
算力资产“续命”专家:苏州威翰德科技赋能NVIDIA高端AI芯片芯片级维修
大数据·人工智能
Miao121313 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
SeaTunnel3 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
爱自由的代码工4 小时前
游戏沉默用户怎么激活?一套可执行的步骤、指标与复盘方法
大数据·游戏·游戏发行·游戏运营·游戏分发
miaowu3575 小时前
AI智能体推动数字化转型:从流程自动化到决策辅助的完整路线图
大数据·人工智能·自动化
互联网江湖6 小时前
珞石机器人:向左科技股,向右零部件制造商?
大数据·人工智能
CRMEB系统商城6 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
Leo.yuan6 小时前
数据仓库建设怎么做?从源数据到分析报表全流程讲清
大数据·分布式·spark
pftn8 小时前
从0到1搭建具身智能数据飞轮:Ray + Kafka + LanceDB 全链路实战
大数据
Web3_Daisy9 小时前
什么是 Robinhood Chain?
大数据·人工智能·web3·区块链