本来没打算学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 <console>:17 scala> 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")         # 把文件导入为并行数据集,即RDD
text1: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[4] at textFile at <console>:15 scala> 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的资源分配策略

Spark 学习笔记1 (常见术语 )的更多相关文章

  1. Spark学习笔记3——RDD(下)

    目录 Spark学习笔记3--RDD(下) 向Spark传递函数 通过匿名内部类 通过具名类传递 通过带参数的 Java 函数类传递 通过 lambda 表达式传递(仅限于 Java 8 及以上) 常 ...

  2. Spark学习笔记0——简单了解和技术架构

    目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...

  3. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  4. Spark学习笔记之SparkRDD

    Spark学习笔记之SparkRDD 一.   基本概念 RDD(resilient distributed datasets)弹性分布式数据集. 来自于两方面 ①   内存集合和外部存储系统 ②   ...

  5. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

  6. Spark学习笔记2(spark所需环境配置

    Spark学习笔记2 配置spark所需环境 1.首先先把本地的maven的压缩包解压到本地文件夹中,安装好本地的maven客户端程序,版本没有什么要求 不需要最新版的maven客户端. 解压完成之后 ...

  7. Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)

    Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...

  8. Spark学习笔记-GraphX-1

    Spark学习笔记-GraphX-1 标签: SparkGraphGraphX图计算 2014-09-29 13:04 2339人阅读 评论(0) 收藏 举报  分类: Spark(8)  版权声明: ...

  9. Spark学习笔记2——RDD(上)

    目录 Spark学习笔记2--RDD(上) RDD是什么? 例子 创建 RDD 并行化方式 读取外部数据集方式 RDD 操作 转化操作 行动操作 惰性求值 Spark学习笔记2--RDD(上) 笔记摘 ...

随机推荐

  1. AngularJs 1.5 $location获取url参数

    地址:http://localhost/waservice.html?id=17 获取参数id的值 app.config(['$locationProvider', function ($locati ...

  2. zookeeper多节点配置

    单机多节点模式 zookeeper解压, 放到 /opt/zookeeper/ 下, 同目录再放一个 server1目录, 下面建data和log两个目录用于存放数据和日志 zoo.cfg [milt ...

  3. 4817 江哥的dp题d

    4817 江哥的dp题d  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 已知1-N的排列P的LIS(最长上 ...

  4. SharePoint 2013:自定义ECB菜单项的添加

    本文分别介绍了两种常用的添加ECB菜单项的方式. 声明式创建 这也是微软最佳实践推荐的方式.在VS中创建一个SharePoint空解决方案,并添加一个“空元素”类型的SPI. 在Elements.xm ...

  5. 【转】如何利用logrotate工具自动切分滚动中的日志文件

    FROM : http://www.2cto.com/os/201503/381812.html 在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或da ...

  6. QT 对话框一

    标准文件对话框 其函数形式如下:: QString QFileDialog::getOpenFileName ( QWidget * parent=, const QString &capti ...

  7. Qt学习笔记 ListWidget的增删改

    学习了一下ListWidget控件的使用,做一个小功能增删改 先把代码分解最后给出完整代码 在窗体上添加一个ListWidget 一个Horizontal Specer和  三个PushButton ...

  8. c++基础 explicit

    c++的构造函数也定义了一个隐式转换 explicit只对构造函数起作用,用来抑制隐式转换 看一个小例子 新建一个头文件 #ifndef CMYSTRING_H #define CMYSTRING_H ...

  9. c++ 指针(二)

    函数指针 可以使用算法的地址传递给方法,传递之前要先完成以下工作 1.获取函数的地址 2.声明一个函数指针 3.使用函数指针来调用函数 1.获取函数的地址,只要使用函数名就可以 Fun2(Fun1); ...

  10. 如何用 fiddler 调试线上代码

    有时代码上线了,突然就碰到了坑爹的错误.或者有时看别人家线上的代码,对于一个文件想 fork 下来试试效果又不想把全部文件拉到本地,都可以使用 fiddler 的线上调试功能. 比方说我们打开携程的首 ...