文档章节

Spark编程基础

k
 kunping
发布于 2017/03/27 14:33
字数 406
阅读 53
收藏 0
1、什么是Spark RDD
	a. Spark RDD is immutable(不可变)
	b. Spark RDD is distributable(分布式)
	c. Spark RDD lives in memory(驻内存)
	d. Spark RDD is strongly typed(强类型)

2、开启Spark监控(3种方式,优先级:c > b > a)
	a. 修改$SPARK_HOME/conf/spark-defaults.conf
		spark.eventLog.enabled           true
		spark.eventLog.dir               hdfs://hadoop.master:9000/user/centos/spark/event_log
	b. 使用./spark-shell(或./spark-submit)命令
		./spark-shell --master spark://spark.master:7077 --conf spark.eventLog.enabled=true --conf spark.eventLog.dir=hdfs://hadoop.master:9000/user/centos/spark/event_log
	c. 使用编码方式
		new SparkConf().set(key, value)

3、Spark-Shell交互模式(或IDEA等)下设置控制台日志输出
	import org.apache.log4j.{Level, Logger}
	Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
	Logger.getLogger("org.apache.eclipse.jetty.server").setLevel(Level.OFF)

4、Spark简单使用
	val acTransList = Array("SB10001,1000", "SB10002,1200", "SB10003,8000", "SB10004,400", "SB10005,300", "SB10006,10000", "SB10007,500", "SB10008,56", "SB10009,30","SB10010,7000", "CR10001,7000", "SB10002,-10")
	
	val acTransRDD = sc.parallelize(acTransList).map(_.split(",")).map(x => (x(0), x(1).toDouble))
	acTransRDD.collect

	val goodTransRecords = acTransRDD.filter( _._2.toDouble > 0).filter(_._1.startsWith("SB"))
	goodTransRecords.collect
	val sumAmount = goodTransRecords.map(_._2.toDouble).reduce(_ + _)
	val maxAmount = goodTransRecords.map(_._2.toDouble).reduce((a, b) => if (a > b) a else b)
	val minAmount = goodTransRecords.map(_._2.toDouble).reduce((a, b) => if (a < b) a else b)

	val highValueTransRecords = goodTransRecords.filter(_._2.toDouble > 1000)
	highValueTransRecords.collect

	val badAmountLambda = (trans: (String, Double)) => trans._2 <= 0
	val badAmountRecords = acTransRDD.filter(badAmountLambda)
	badAmountRecords.collect

	val badAcNoLambda = (trans: (String, Double)) => trans._1.startsWith("SB") == false
	val badAccountRecords = acTransRDD.filter(badAcNoLambda)
	badAccountRecords.collect

	val badTransRecords = badAmountRecords.union(badAccountRecords)
	badTransRecords.collect

	val combineAllElements = sc.parallelize(acTransList).flatMap(trans => trans.split(","))
	combineAllElements.collect

	val allGoodAccountNos = combineAllElements.filter(_.startsWith("SB"))
	allGoodAccountNos.distinct.collect

	val accSummary = acTransRDD.reduceByKey(_ + _).sortByKey()
	accSummary.collect

5、Spark Transformation And Actions
	a. Spark transformation
		filter(fn)
		map(fn)
		flatMap(fn)
		union(other)
		join(other, [numTasks]):根据key连接两个RDD

	b. Spark action
		collect()
		reduce(fn):
		foreach(fn):迭代
		reduceByKey(fn,[noOfTasks]):根据key分类,通过fn计算value
		sortByKey([ascending], [numTasks]):通过key进行排序
		first():返回RDD的第一个元素
		take(n):返回RDD前n个元素
		countByKey():计算每个key的个数
		count():返回RDD元素的个数

6、从文件中创建RDD
Local filesystem	val textFile = sc.textFile("README.md")
HDFS			val textFile = sc.textFile("hdfs://<location in HDFS>")

 

© 著作权归作者所有

上一篇: Spark SQL编程
k
粉丝 3
博文 61
码字总数 29867
作品 0
深圳
私信 提问
18小时内掌握Spark,全面提升Spark技能!

伴随着大数据相关技术和产业的逐步成熟,继Hadoop之后,Spark技术以其无可比拟的优势,发展迅速,将成为替代Hadoop的下一代云计算、大数据核心技术。   Spark是基于内存,是云计算领域的继...

Spark亚太研究院
2014/06/12
77
0
Spark2.1.0之基础知识

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/beliefer/article/details/80303035 在阅读本文之前,读者最好已经阅读了《Spark2.1.0之初识Spark》一文,本文...

泰山不老生
2018/05/24
0
0
Spark 2.0 时代全面到来 —— 2.0.1 版本发布

距离Spark 2.0.0发布两个月后,Spark 2.0.1版本发布了,这是一个修正版本,共处理了300多个Issue,涉及spark稳定性和bug等方面的修复 ,它的发布意味着Spark 2.0接近生产环境使用要求,想要尝...

达尔文
2016/10/08
13.4K
22
# Apache Spark系列技术直播# 第五讲【 Spark RDD编程入门 】

内容提要:本次讲座主要涵盖Spark RDD编程入门基础,包括: Spark、RDD简介 RDD API简介 打包与spark-submit 性能分析与调优基础 主讲人:王道远(健身) 阿里巴巴计算平台EMR技术专家 直播时间...

spark小能手
2018/12/12
0
0
如何成为云计算大数据Spark高手

Spark采用一个统一的技术堆栈解决了云计算大数据的如流处理、图技术、机器学习、NoSQL查询等方面的所有核心问题,具有完善的生态系统,这直接奠定了其一统云计算大数据领域的霸主地位; 要想...

Spark亚太研究院
2014/06/13
2.1K
3

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部