spark高级数据分析系列之第二章用 Scala 和 Spark 进行数据分析
来源:互联网 发布:英语单词读音软件小学 编辑:程序博客网 时间:2024/05/21 10:14
2.1数据科学家的Scala
spark是用scala语言编写的,使用scala语言进行大数据开发的好处有
1、性能开销小
减少不同环境下传递代码和数据的错误和性能开销
2、能用上最新的版本和最好的功能
Spark的新功能毫无疑问是首先适配scala语言,但使用spark的所有功能可不是那么容易
3、有助于了解spark的原理
2.2小试牛刀
接下来是通过一个数据清理的例子来熟悉scala和spark,可以从http://bit.ly/1Aoywaq下载本节的数据集(需要翻墙下载),推荐一个VPN网址一小时VPN。
数据的预览
第一步是读取数据
val conf = new SparkConf().setAppName("WordCount").setMaster("local") //先生成RDD的配置对象conf,配置名称WordCount,运行在本地模式val sc = new SparkContext(conf) val rawblock1 = sc.textFile("/home/sam/下载/linkage/donation/block_1.csv")//读取一个表格的数据到RDDval rawblock2 = sc.textFile("/home/sam/下载/linkage/donation/block_2.csv")val raws = rawblock1.union(rawblock2) //合并RDD然后去除表格的头部
def isHeader(line:String) = line.contains("id_1") //包含字符“id_1”行就是表格头部val noheader = raws.filter(!isHeader(_)) //RDD是只读的,把不包含头部的数据筛选出来生成一个新的RDD数据转换异常数据处理
为了让数据更方便使用,重新整理数据的结构,把数据分为4部分
case class MatchData(id1: Int, id2: Int,scores: Array[Double], matched: Boolean)定义一个类,再通过下面的parse()方法把每行数据整合到MatchData类里面
然后把字符串数据转换为数据本来的类型。
id_1intid_2intcmp_fname_c1到cmp_plzdoubleis_matchboolean可以看到表格中有很多?,代表着数据缺失,在数据类型转换的同时需要把?转为NANdef toDouble(s: String) = {if ("?".equals(s)) Double.NaN else s.toDouble}定义把每行数据转重新结构化为MatchData类的方法
def parse(line: String) = { val pieces = line.split(',') val id1 = pieces(0).toInt val id2 = pieces(1).toInt val scores = pieces.slice(2, 11).map(toDouble) val matched = pieces(11).toBoolean MatchData(id1, id2, scores, matched) }把noheader RDD转为结构化RDD
val parsed = noheader.map(line => parse(line))
可以把结构化的数据分组,按照is_match的值进行分组val grouped = parsed.groupBy(_.matched)把每个分组的数据个数打印出来
grouped.mapValues(_.size).foreach(println)关闭spark
sc.stop()
阅读全文
0 0
- spark高级数据分析系列之第二章用 Scala 和 Spark 进行数据分析
- Spark 高级分析:第二章第1节Scala和数据科学家
- spark高级数据分析第二章
- spark高级数据分析系列之第三章音乐推荐和 Audioscrobbler 数据集
- Spark高级数据分析
- Spark是什么?用Spark进行数据分析
- spark高级数据分析-scala学习(学习笔记)
- Spark快速大数据分析-第一和第二章
- Spark快速大数据分析之第二章Spark 下载与入门
- 用Apache Spark进行大数据处理之用Spark GraphX图数据分析(6)
- 《Spark高级数据分析》ChapterII 读书笔记
- 3-Spark高级数据分析-第三章 音乐推荐和Audioscrobbler数据集
- Zeppelin对Spark进行交互式数据查询和分析
- 基于Spark和Hive进行的豆瓣电影数据分析
- spark高级数据分析实战---用决策树预测森林植被
- 大数据分析的技术栈(四)-Spark&Scala
- spark快速大数据分析之读书笔记
- Spark数据分析之第1课
- 线程间通讯 wait notify notifyAll简单使用
- 安卓智能地图开发与实施十八:空间要素绘制
- Mac环境下配置python3
- android_系统广播大全
- libcocos2d
- spark高级数据分析系列之第二章用 Scala 和 Spark 进行数据分析
- C++ Primer 初学之旅
- JSTL标签
- pthread_create函数的详细讲解(包括向线程函数传递参数详解)
- 精益产品需求的要义
- 关于动态代理实现的步骤及操作
- 实现webservice接口学习心得
- 程序视界——聚焦程序员的
- 工作准备