spark清洗离线数据

来源:互联网 发布:淘宝网话费充值中心 编辑:程序博客网 时间:2024/04/27 23:48

最近花了半个月时间研究了一哈scala 感觉可以做的东西还是蛮多了。目前工作清洗40多G的数据很费劲(采用oracle做很费事),所有研究了spark来清洗离线数据。

废话不多说开始程序设计:

首先我想到的是输入 这里采用HDFS文件。假设我们将oracle的数据采用json格式的形式并且采用urldecode方法转换文本(因为一些特殊字符常常会导致我们的json文件读取异常,所有我这里采用转码的情况来规避这个问题---这里特殊字符和回车换行对我数据来说是合理的)类型的数据。

 主函数代码:

def main(args: Array[String]) {  //输入文件既可以是本地linux系统文件,也可以是其它来源文件,例如HDFS    init() --加载公参数据  if (args.length == 0) {    System.err.println("Usage: DateClean <inputfile> <outputfile>")    System.exit(1)  }  val conf = new SparkConf().setAppName("DateClean ")  val sc = new SparkContext(conf)  //rdd2为所有包含Spark的行  val rdd1 = sc.textFile(args(0))  val rdd2 = rdd1.map(CClean)  //保存内容,在例子中是保存在HDFS上  rdd2.saveAsTextFile(args(1))  sc.stop()}

输入为文件  事先准备的一个json文件

init()  为程序初始化 然后访问数据加载公参数据  比如  读取数据库     表数据1 男2女 加载到hashmap集合中

撰写一个 json解析方法 返回一个 数据集

提供一个URLendcode 来解析json中字段未字符的数据 然后清洗


关键点 清洗函数

CClean


def CClean(datejson: String): String = {  
  val datearray: Array[String] = datejson.split()
  var data1 = f_clean_data1(datearray.apply(1))
  var data2 = f_clean_data2(datearray.apply(2))
  var data3 = f_clean_data3(datearray.apply(3))

  val ress = Jsongroup("data1",data1,"data2",data2,"data3",data2)
ress}

这里清洗完毕后 组装一个json格式的数据返回


  rdd2.saveAsTextFile(args(1))  sc.stop()
最后将这个返回的 rdd2 保存到参数2文件中  ,整个清洗过程结束



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 蛋蛋让尿淹了发红有小红瘩达怎么办 手被皮筋弹肿了怎么办 手被皮筋勒肿了怎么办 皮筋把手挤肿了怎么办 猫被皮筋绑久肿了怎么办 抗链0高关节疼怎么办 近视800度老了怎么办 军检体重不达标怎么办 到交房租没有钱怎么办 房租没到期房东要收回怎么办 客户指定发快递我要怎么办? 跨境汇款被退回怎么办 汇款途径写错了怎么办 快递被菜鸟驿站退回怎么办 电脑登录账户已锁定怎么办 被外管局查到境外汇款买房怎么办 军校生复检被刷怎么办 企业私刻章拿去挂项目怎么办? 中通快递被退回怎么办 网易邮箱提示被修复怎么办 小孩屁股烫红了怎么办 8岁近视400度怎么办 部队体能差的人怎么办 上环5天同房了怎么办 肾结石有3mm了怎么办 4*3mm肾结石好痛怎么办 做完肾结石积水后迟续发烧怎么办 血糖高有肾结石反复发高烧怎么办 肾里面有小结石怎么办 大于2厘米的结石怎么办 双肾结石肾盏扩张怎么办 边防消防警卫部队改革义务兵怎么办 汽车年检尾气复检不合格怎么办 车辆年检尾气不合格复检怎么办? 在瓜子上买车复检有问题怎么办 更换车壳车架号怎么办 吸完甲醛的绿萝怎么办 如果公务员复检不合格有异议怎么办 国考公务员政审没有毕业证怎么办 打针硬块4年不消怎么办 外墙补起来难看不好卖怎么办