Spark笔记

来源:互联网 发布:linux怎么退出man 编辑:程序博客网 时间:2024/05/21 15:01

    • 基础知识
      • RDD原理
      • Spark 基础
    • Spark 配置
      • conf 和 sc
    • RDD操作
    • 函数
    • 共享变量
      • 广播变量
      • 累加器

基础知识

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文件创建RDDval 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()

函数

//创建一个单例对象MyFunctionsobject 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
0 0
原创粉丝点击