Spark笔记

基础知识

RDD原理

[RDD原理详解]

Spark 基础

[Spark基础教程]

Spark 配置

conf 和 sc

开发Spark程序第一件事就是SparkConf对象,这个对象包含应用的一些信息,然后创建SparkContext,SparkContext可以让Spark知道如何访问集群

conf = SparkConf().setAppName("<app name>")
       .setMaster("<集群地址>")
sc = SparkContext(conf = conf)

RDD操作

[RDD操作全集]

  1. 转换
    将已存在的数据集转换成新的数据集,例如map。转换是惰性的,不会立刻计算结果,仅仅记录转换操作应用的目标数据集,当动作需要一个结果时才计算。
  2. 动作
    数据集计算后返回一个值给驱动程序,例如reduce
// 从protocols文件创建RDD
val distFile = sc.textFile("/etc/protocols")

// Map操作,每行的长度
val lineLengths = distFile.map(s => s.length)

// Reduce操作,获得所有行长度的和,即文件总长度,这里才会执行map运算
val totalLength = lineLengths.reduce((a, b) => a + b)

// 可以将转换后的RDD保存到集群内存中
lineLengths.persist()

函数

//创建一个单例对象MyFunctions
object MyFunctions {
  def func1(s: String): Int = {s.split(" ").length}
}

//将函数传入集群运行
val lineLengths = sc.textFile("/etc/protocols").map(MyFunctions.func1)

共享变量

广播变量

广播变量可以在每个机器上缓存一个只读的变量,可以通过sc.broadcast(v)方法创建。广播变量能够更高效的进行数据集的分配。

累加器

// 创建累加器
val accum = sc.accumulator(0, "My Accumulator")

// 对RDD数据集的数值进行累加
sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x)

// 查看累加器的结果
accum.value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值