博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark 学习笔记1 (常见术语 )
阅读量:5768 次
发布时间:2019-06-18

本文共 2222 字,大约阅读时间需要 7 分钟。

本来没打算学Spark 的,不过时机很逗。

最膜拜的大神做spark分享,还是其中最好玩的notebook。这不就是另外一个 HUE吗,但感觉更好玩。

刚好新的Spark 2.x 要问世了,大神在组织战队一起迭代。就此开始跟着大神脚后跟一点点的了解,学习争取入门吧。

https://github.com/endymecy/spark-programming-guide-zh-cn  (官方文档)

https://www.gitbook.com/book/endymecy/spark-config-and-tuning/details (参数与调优)

 

术语总览:

transformation,action,RDD

job,task,stage

executor

persist 持久化(一般把RDD持久化到内存中)

 

两种抽象:

1. RDD 弹性分布式数据集,一个可并行操作的有容错机制的数据集合

2. shared variables 共享变量,包含两种

  • broadcast variables  广播变量:缓存一个只读的变量在每台机器上面,而不是每个任务保存一份拷贝。 通过方法 var1.sc.broadcast(v) 创建, var1.value()可以查看它的值
  • accumulator 累加器:一种只能通过关联操作进行“加”操作的变量,它能够高效的应用于并行操作中。   sc.accumulator(v)

并行集合:

parallelized collections, 可以在已有的集合上调用 sc.parallelize(yourCollection) 方法创建。

实例:

scala> val data=Array(1,2,3,4,5)               # 创建一个已有集合data: Array[Int] = Array(1, 2, 3, 4, 5)scala> val distData=sc.parallelize(data)       # 复制成一个并行数据集,即RDD distData: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[2] at parallelize at 
:17scala> distData.reduce((a,b)=>a+b) # 并行计算总和res4: Int = 15

并行集合一个很重要的参数是切片数(slices),表示一个并行数据集切分的份数。

一般Spark可以自动决定,你也可以通过设置,在第二个参数如 sc.parallelize(data, 10)

外部数据集:

Spark 支持文本文件(text files),SequenceFiles 和其他 Hadoop InputFormat。

通过 sc.textFile 来创建,然后可以对之做分布式操作。

实例:

scala> val text1=sc.textFile("/data/test/test_yy.txt")         # 把文件导入为并行数据集,即RDDtext1: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[4] at textFile at 
:15scala> text1.map(s=>s.length).reduce((a,b)=>a+b) # 并行计算文件的行数res5: Int = 8

RDD操作

  • 转换(transformations)   从已经存在的数据集中创建一个新的数据集;
  • 动作(actions)        在数据集上进行计算之后返回一个值到驱动程序

 常用的一些transformation:

  • map(func)
  • filter(func)
  • flatmap(func)    类似于 map,但是每个输入项能被映射成多个输出项(所以 func 必须返回一个 Seq,而不是单个 item)

常用的一些actions:

 

 RDD 持久化(persist)

  • RDD持久化其实也就是缓存的问题,通过各种操作(operations)持久化(或者缓存)一个集合到内存中。
  • 可以通过persist()或者cache()方法持久化一个rdd。
  • Spark的缓存是容错的:如果RDD的任何一个分区丢失,它可以通过原有的转换(transformations)操作自动的重复计算并且创建出这个分区

DStream

离散数据流(discretized stream)是Spark Streaming支持的一个高级抽象。

可以利用从Kafka, Flume和Kinesis等源获取的输入数据流创建,也可以在其他DStream的基础上通过高阶函数获得。在内部,DStream是由一系列RDDs组成。

Checkpoint

 不同的集群管理器:

  • Spark Standalone   独立的Spark集群
  • Mesos
  • YARN   使用了YARN的资源分配策略

 

posted on
2016-05-10 23:58 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/skyEva/p/5479926.html

你可能感兴趣的文章
KVO原理分析及使用进阶
查看>>
【348天】每日项目总结系列086(2018.01.19)
查看>>
【JS基础】初谈JS现有的数据类型
查看>>
【294天】我爱刷题系列053(2017.11.26)
查看>>
Microsoft发布了Azure Bot Service和LUIS的GA版
查看>>
Google发布Puppeteer 1.0
查看>>
.NET开源现状
查看>>
可替换元素和非可替换元素
查看>>
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
AMD改善Linux驱动,支持动态电源管理
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>
ChPlayer播放器的使用
查看>>
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>
Oracle 备份与恢复学习笔记(5_1)
查看>>
Oracle 备份与恢复学习笔记(14)
查看>>