初见spark-02(RDD及其简单算子)
今天,我们来进入spark学习的第二章,发现有很多事都已经开始变化,生活没有简单的朝自己想去的方向,但是还是需要努力呀,不说鸡汤之类的话了,
开始我们今天的spark的旅程
一.RDD是什么
rdd的中文解释为弹性分布式数据集,全称Resilient Distributed Datases,即内存中的数据集,
RDD只读,可分区,这个数据集的全部或部分可以缓存到内存之中,在多次时间间重用,所谓
弹性,是指内存不够是可以与磁盘进行互换
二.spark算子
spark算子一共分为两类,一类叫做Transformation(转换),一类叫做Action(动作)
Transformation延迟执行,Transformation会记录元数据信息,当计算任务触犯Action才开始真正的执行(这个上一个章节也介绍过)

这个里面起前面无论是map还是filter的方法,都是transform方法,所以这个值并没有真正的别改变,直到collect,这个是Action,则它真正的值才会被调用
三.创建RDD的两种方式
1.通过HDFS支持的文件系统创建RDD,RDD里面没有真正要计算的数据,只记录一下元数据
2.通过scala集合或数组以并行化的方式创建RDD
看一下内部实现对于RDD的概括(5个特点)
Internally, each RDD is characterized by five main properties:
- A list of partitions
- A function for computing each split
- Alist of dependencies on other RDDs
- Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
- Optionally, a list of preferred locations to compute each split on (e.g. block · locations an HDFS file)
四.spark在IDEA上的第一个程序
1.首先我们先在idea上写一个spark程序,然后package
object WordCount {
def main(args: Array[String]): Unit = {
//非常重要,通向spark集群的入口
val conf = new SparkConf().setAppName("WC")
val sc = new SparkContext(conf)
sc.textFile(args(0)).flatMap(_.split(" ")).map(((_,1))).reduceByKey(_+_).sortBy(_._2).saveAsTextFile(args(1))
sc.stop()
}
}
首先先要澄清一点,这个里面我们的spark是采用maven的形式来创建的,所以我们的pom文件加上上对spark的支持
我们在package的时候,会在target中生成两个jar包,我们选容量大的,应为可能要包括其他的库
2.上传到Linux上面,并提交(这个里面和在hadoop上面执行jar包很相似)
./spark-submit
--master spark://192.168.109.136:7077
--class cn.wj.spark.WordCount
--executor-memory 512m
--total-executor-cores 2 /tmp/hello-spark-1.0.jar hdfs://192.168.109.136:9000/wc/* hdfs://192.168.109.136:9000/wc/out
即可,这个时候我们可以通过192.168.109.136:8080可以查看当前spark的项目执行情况
五.Master与Worker的关系
Master管理所有的Worker,进而进行资源的调度,Worker管理当前的节点,Worker会启动Executor来完成真正的计算
初见spark-02(RDD及其简单算子)的更多相关文章
- 关于spark RDD trans action算子、lineage、宽窄依赖详解
这篇文章想从spark当初设计时为何提出RDD概念,相对于hadoop,RDD真的能给spark带来何等优势.之前本想开篇是想总体介绍spark,以及环境搭建过程,但个人感觉RDD更为重要 铺垫 在h ...
- spark中RDD的转化操作和行动操作
本文主要是讲解spark里RDD的基础操作.RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD当 ...
- [转]Spark学习之路 (三)Spark之RDD
Spark学习之路 (三)Spark之RDD https://www.cnblogs.com/qingyunzong/p/8899715.html 目录 一.RDD的概述 1.1 什么是RDD? ...
- Spark学习之路 (三)Spark之RDD
一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...
- Spark之 RDD
简介 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合. Resilien ...
- Hadoop学习(9)-spark的安装与简单使用
spark和mapreduce差不多,都是一种计算引擎,spark相对于MapReduce来说,他的区别是,MapReduce会把计算结果放 在磁盘,spark把计算结果既放在磁盘中有放在内存中,ma ...
- Spark之RDD
Spark学习之路Spark之RDD 目录 一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数 ...
- Spark RDD :Spark API--Spark RDD
一.RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...
- Spark学习之路 (三)Spark之RDD[转]
RDD的概述 什么是RDD? RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的 ...
随机推荐
- 开启win7笔记本自带无线功能
在cmd中输入以下命令: netsh wlan set hostednetwork mode=allow /disallow netsh wlan set hostednetwork ssid=Myw ...
- Html编码(&#数字型)与解码小结 - 针对Puny Code(中文域名)的解码处理
学习并了解到Html编码的知识,源于工作中的产品需求.如果一个URL里面包含Puny Code(不仅仅指中文,还可能是韩文等Unicode里非英文的国家文字,本文以含中文的URL为例),而且这个URL ...
- mybase修改内部文件免费使用
关于mybase的介绍就不多说了,下载后一般只有30天的使用期限.以下方法可以无限次使用该软件(当然,每隔一个周期就需要修改myBase.ini) 原文博客详见:https://www.cnblogs ...
- Java运行机制及相关术语
JVM java虚拟机(Java Virtual Machine)JVM可以实现java程序的夸平台运行,即运行的操作平台各不相同 JVM基本原理 java运行机制 编译型语言(如C.C++) 源文件 ...
- DEEP LEARNING 大满贯课程表
Reinforcement Learning post by ISH GIRWAN Courses/Tutorials Deep Reinforcement Learning, Spring 2017 ...
- Django基础--3
ORM django一对多的操作 获取表单的三种方式:views 获取对象 .all() html中获取方式为 row.id,row,host 获取字典 ...
- 概念:静态static相关知识
在面向对象中,有‘静态’概念,通过关键字static进行说明, 例如: 静态属性:public static $name = '小仓鼠' 静态方法:public static function Nam ...
- April 20 2017 Week 16 Thursday
We are all in the gutter, but some of us are looking at the stars. 我们都生活在阴沟里,但仍有人仰望星空. In the past m ...
- WSL的unable to resolve host问题
运行apt-get的时候提示 sudo: unable to resolve host DESKTOP-PS8VD9E 在 /etc/hosts文件中 127.0.0.1 对应主机名字给加一行就好了
- 剑指offer39 平衡二叉树
剑指上用了指针传递,这里用的引用传递 class Solution { public: bool IsBalanced_Solution(TreeNode* pRoot) { ; return IsB ...