数据清洗6

(一)需求说明
  假设你有一个包含用户信息的文本文件,每行格式为 姓名,年龄,性别,需要清洗掉年龄为空或者非数字的行。

  以下是 10 条符合上述示例中数据格式(姓名,年龄,性别)的测试数据,包含了一些可能需要清洗掉的无效数据,你可以将其保存为一个文本文件,用于测试上面的数据清洗程序。

张三,25,男

王五,30,男

李四,28,女

赵六,a,男

刘七,32,女

陈八,29,男

孙九,55,女

   这里面:“赵六”的年龄不是有效的数字,在执行数据清洗程序时,这些行应该会被过滤掉。

(二)思路分析
读入文件
对每一行数据进行分析
字段拆分,拆分出年龄这个字段
判断
如果它不是数字或者缺失,则忽略这条数据
否则保存
(三)难点突破
读入txt文件。 val lines = sc.textFile(inputFile)
对拆分出一行中的年龄。val fields = line.split(",")  fields(0)
过滤算子中,函数返回为false,就会被过滤掉,函数返回为true,就会被保留下来。
使用正则表达式。/\d/
(四)功能实现
创建新的maven项目。
创建input文件夹,在input下新建记事本文件,内容就是前面的实例数据。
在src下创建新的scala文件,开始写功能代码。
// 1.读入文件

// 2.开始过滤,对每一行数据进行分析

// (1)字段拆分,拆分出年龄这个字段

// (2)判断

// ①如果它不是数字或者缺失,则忽略这条数据

// ②否则保存

// 3.保存过滤之后的文件

(五)参考代码
import org.apache.spark.{SparkConf, SparkContext}
 
object DataFilter {
  //1 读取数据 读入文件
  //2 对于文件的每一行
  //3 将每一行数据解析成对象  分析年龄 判断数字 是就保留
  //4 对象进行过滤 保存到文件
  def main(args: Array[String]): Unit = {
    val conf= new SparkConf().setAppName("DataFilter").setMaster("local[*]")
    val sc = new SparkContext(conf)
 
    val rdd = sc.textFile("data/file.txt")
 
    var rdd1=rdd.filter(line => {
      val age = line.split(",")(1)
      println(age)
      age.matches("\\d+")
    })
    rdd1=rdd1.coalesce(1)
    rdd1.saveAsTextFile("output")
  }
}
AI写代码
Scala

运行结果如下:


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.youkuaiyun.com/2301_81748087/article/details/147916052

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值