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文件中 ,整个清洗过程结束
阅读全文
1 0
- spark清洗离线数据
- Python Pandas、Spark数据清洗
- Spark RDD进行艺术家数据集清洗
- 慕课网学习spark笔记之数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- 数据清洗
- spark离线大数据运算程序编译
- 使用spark读取es中的数据并进行数据清洗,使用fp-growth算法进行加工
- spark 关于数据格式的清洗
- Spark日志清洗一般流程
- perl 数据清洗 实例
- ETL---数据清洗转化
- 百度地图API之环境搭建
- 字符串链接函数 CONCAT_WS CONCAT
- EventBus 3.0(三)
- MySQL 使用while语句向数据表中批量插入数据
- week 2
- spark清洗离线数据
- 6月13日--元组传参、pageobject
- 发送手机短信代码
- 快速排序 快速搞定
- Log4 日志配置文件
- SSM环境搭建
- C 排序算法(一)
- cookie与session的区别
- 【正一专栏】识时务者为俊杰——致敬杜兰特