spark一些常识整理(一)

前言:最近用了一段时间spark,略有所得,借此平台,互相学习!共勉!

spark是什么?有什么特点?

spark是基于内存计算的大数据框架引擎,有以下4个特点
1.速度快:主要通过DAG Scheduler 这个有向无环图,实现迭代式计算
2.易用性:支持多种语言,如Java、scala、Python、R、SQL等
3.通用性:统一实现了core 、sql 、 Streaming 、 Mlib 图计算,底层实现RDD。
4.兼容性:兼容Hadoop的一些组件,如Hbase、hive、HDFS、yarn等,也可以与数据库一起使用

在这里我也运行了一个经典的小程序 π 值计算
在linux中的spark路径下/usr/local/spark/bin下输入下面的命令
./spark-submit  \
--class org.apache.spark.examples.SparkPi  \
--master spark://node01:7077 \
--executor-memory 512m \
--total-executor-cores 2 /usr/local/spark/lib/spark-examples-1.6.3-hadoop2.6.0.jar 50
注:total-executor-core 2 起两个worker 运行的jar包路径   次数

可以看到运行结果是50次计算π值的平均值

上面讲了spark的底层都是RDD,那么RDD又是什么?有什么特性?

RDD是一个不可变,可分区,元素可以并行计算的弹性分布式数据集,并且是spark的最基本的数据抽象。
简单来说就是:RDD是一个逻辑概念,一个RDD有多个分区,一个分区在executor节点上执行时,它就是一个迭代器,
一个RDD有多个分区,一个分区数据坑定在一台机器上,但是
一台机器有多个分区,我们在操作时就是拿分布在多台机器上的数据,而RDD相当于一个代理,对RDD的操作就是对分区的操作,也就是对每台机器上的迭代器操作,因为迭代器保存着我们要操作的数据。

RDD的五大特征:

1、一系列的分区,也是数据集的基本组成单位。
2、一个函数作用于每个分区。
3、RDD之间有依赖关系。
4、若RDD内数据是key,value类型的,会有HashPartitioner(分区器)作用于该RDD。
5、在存储和读取时按照就近原则,也就是移动数据,不如移动计算。

既然RDD这么多好处,那怎么将我我们的数据转化成RDD的形式呢?

就我所知有两大类:
第一个:并行化创建RDD通过
sc.parallelize()实现
第二个:使用本地或HDFS上文件系统创建RDD
sc.textFile(Path)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值