Spark入门1

SparkContext


类名

org.apache.spark.SparkContext
Spark上下文对象,是Spark程序的主入口点,负责连接到Spark cluster
可用创建RDD ,在集群上创建累加器和广播变量
每个jvm只能激活一个SparkContext对象,创建新的SparkContext对象时,必须stop原对象

MapReduce

map :split

RDD : Resilient(弹性) Distributed(分布式) Datasets(数据集)

类名

org.apache.spark.rdd.RDD
是不可变、可分区的元素集合,可进行并行操作。
该类包含了可用于与所有RDD之上的基本操作 如:
map ,filter,persist

在RDD内部,每个RDD有五个特征

 *  - A list of partitions
 *  - A function for computing each split
 *  - A list 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 for
 *    an HDFS file)
 *

  • 每一个分区列表
  • 每个split都有一个计算函数
  • 存放parent的RDD依赖列表
  • (可选)基于key value 的分区器
  • (可选)首选的位置列表

Spark集群中所有调度和执行都是基于RDD

所有调度和执行都是基于这些方法,RDD可以决定实行哪一个方法

val lines =

本地读取
在这里插入图片描述
在HDFS中读取

val lines = sc.textFile("/root/Desktop/...")

val 常用操作

lines.count

统计行数

lines.frist

提取第一行

val txt = lines.take(xx)

提取前xxx行


每个Spark程序由deiver构成,由它启动各种操作

driver含有main函数和分布式数据集,并对他们的应用各种操作
spark-shell就是driver(包含main方法)
Driver通过SparkContext来访问Spark,代表和Spark集群的链接

运行程序时,驱动程序需要管理一些叫做executor的节点

在这里插入图片描述

=============================================================================

查看指定的文本在多少行

在这里插入图片描述


//加载文本形成rdd
$scala>val lines = sc.textFile("file:///home/ubuntu/data.txt");
//调用rdd.filter(x=>boolean),过滤含有0000的行
$scala>val rdd2 = lines.filter(x => x.contains("0000"))
//统计有多少行含有0000
$scala>rdd2.count

===========================================================================

初始化spark在scala java中

在这里插入图片描述

Spark-shell

默认使用local模式运行spark程序,没有用到spark集群,类似于hadoop本地模式

n :本地模式下 启动的线程数,模拟spark集群
spark-shell --master local[n]

在本地模式下启动四个线程模拟spark集群

$>spark-shell --master local[4]
$scala>val lines = sc.textFile("file:///home/Desktop/bonus.txt");
$scala>val rdd2 = lines.map(x=>{
				val tname = Thread.currentThread().getName();
				println(tname + " : " + x)
				x
				})
$scala>rdd2.count

使用maven编译和运营scala的spark程序

		spark-shell 写一个独立的scala的app
  • 编写scala源代码
    在这里插入图片描述
    也可以使用java编写程序
    在这里插入图片描述
    在这里插入图片描述

  • 编写pom.xml文件
    在这里插入图片描述

  • 使用maven进行编译

mvn clean && mvn compile && mvn package
  • 生成对应的文件夹
target/wc-0.0.1.jar
  • 通过spark-sumit提交脚本运行spark程序
    在这里插入图片描述
$ 

压扁的原理

在这里插入图片描述

RDD Basics

1 不可变集合

2 每个RDD 切割成分区 每个分区在不同节点上计算

3 创建RDD 的两种方式

a. 加载外部数据集 sc.textFile(...)
b. 或者分发一个对象集合。

4 RDD的两种操作类型

transformations:从前一个RDD产生一个新的RDD。例如filter操作
action:基于RDD计算一个结果/返回值给driver/存储文件到存储系统上

**5 rdd.persist() **

//持久化到内存,也可以到磁盘

6 使用paralielize()创建rdd

sc.parallelize()
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oifengo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值