spark学习一

spark框架是如何处理数据的

  • 并行计算的思想
  • 将要分析的数据放到集合中去,然后调用集合的高阶函数处理数据

spark是什么

Apache Spark™ is a unified analytics engine for large-scale data processing.

翻译:统一分析引擎为海量数据处理

注: 统一:什么样的数据都能处理分析,什么类型的数据都可以处理,实时,离线,流式都可以

备注:将分析的中间结果放在磁盘中,并且后续进行分析数据的时候,再次从磁盘中去读取数据,以往此往返

Runs Everywhere

spark要处理的数据在哪里
hdfs/hive/HBASE/ORC/parquet/csv/tsv/jdbc/redis/mangdb/ES等都可以
注:spark能从哪里读数据,就可以往那里写数据

spark程序运行在哪里
本地模式
集群模式:在Yarn,Standalone,mesos Cluster上

spark分析数据的过程

第一步、数据的读取(输入)

将要处理的数据读取封装到一个集合RDD中(类别Scala中List列表)

val inputRDD = sc.textFile(”…“)

第二步、数据处理

调用集合RDD中函数(高阶函数)进行处理分析

RDD –>函数 ->另外一个RDD :transformation函数

val outpuRDD = inputRDD.#(#:基本就是List中函数)

第三步、数据的输出

调用RDD中函数,返回的不是RDD类型

outputRDD.# :此类型函数称为Action函数

foreach\count\sum\first

3步放在一起,就是链式编程

sc.textFile(…).transformation().action

spark appliction与MapReduce application的区别

spark-shell –master local[2]

  • 运行一个程序在本地模式

  • [2] ->表示的 线程thread

  • 每个task运行在一个线程Thread里面,都需要1core CPU

对于MapReduce application来讲

  • 一个MapReduce application就是一个Mapreduce job
  • 每个task(map task还是reduce task)运行在进程中(JVM process)

RDD是什么

Resilient(弹性) Distributed(分布式) Dataset (集合)

解释:

弹性:什么都能装,数据类型多

分布式:将数据划分为很多分区(partitioned),不同分区的数据存在在不同的机器里面,每个分区的数据可以被一个Task进程处理分析

集合:在使用的时候,就当做为Scala集合类中List列表

RDD创建方式

在这里插入图片描述
在这里插入图片描述
RDD中函数的分类

1.转换函数Tansformation

一个RDD调用函数之后 转换为另外一个RDD

map,filter,reducBykey

2.action函数

一个RDD调用函数之后,不会转换为一个RDD,触发一个Job的执行

比如
count ->Long
first -> 第一条数据
take ->获取前几条数据
top->获取前几条数据(排序)
foreach ->打印所有的数据
saveAsTextFile ->保存数据到文件

持久化persisitent

def persist(newLevel: StorageLevel)

class StorageLevel private(
private var _useDisk: Boolean, //磁盘
private var _useMemory: Boolean, //内存
//JVM内存中tachyon(基于内存的分布式文件系统)
private var _useOffHeap: Boolean, /
private var _deserialized: Boolean, 反序列化
private var _replication: Int = 1) //副本个数
extends Externalizable

什么情况下,RDD数据需要进行持久化呢???
(1)某个RDD数据,被多次使用
重复RDD
(2)某个RDD数据来自不易,使用超过1次
经过复杂的处理得到RDD
(3)通常选择的策略
MEMORY_ONLY_2 -如果内存足够
MEMORY_AND_DISK_SER_2 -如果内存不够,先内存后磁盘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值