当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/179086.html

相关文章:

  • FPGA----基于ALINX提供的debian实现TCF
  • ESP32 PWM音频应用及场景说明
  • 手机上使用的记录笔记的软件推荐哪一款
  • 同比和环比有什么区别?同比和环比的计算方法
  • OrangePi Zero 3学习笔记(Android篇)3 - 串口
  • 网络协议之DHCP和PXE分析
  • css样式基础
  • OpenCV进阶操作:图像的透视变换
  • 巧用python之--模仿PLC(PLC模拟器)
  • leetcode0433. 最小基因变化-medium
  • nginx 配置后端健康检查模块
  • 医院信息集成平台是什么?怎么促进医院信息化建设?
  • [逆向工程]什么是HOOK(钩子)技术(二十一)
  • verilog循环仿真
  • 扣子创建一个应用
  • 坚果云(实现同步)+zotero(管理文献)+scholaread(阅读文献)
  • SwiftData 数据持久化解决方案
  • 《spark》
  • 国内led显示屏厂家以及售后 消费对比与选择
  • Windows系统下使用Kafka和Zookeeper,Python运行kafka(二)
  • 05_项目集成飞书预警
  • 2025 EAU UTUC指南学习笔记②:分期分级全梳理,科研的靶点可能藏在分层逻辑中
  • 数据结构(四)——栈的应用—数制转换
  • Vue3中emits和emit
  • App Store支付新政重构跨境电商生态:eBay卖家的突围之道
  • ABP vNext + gRPC 实现服务间高速通信
  • 【嵌入式面试高频知识点】-wifi相关
  • [硬件电路-18]:MCU - LPC1765FBD100是恩智浦(NXP)半导体推出的一款基于ARM Cortex-M3内核的高性能32位微控制器
  • Python3 上下文管理器:优雅管理资源的艺术
  • Java复习笔记-基础