尊重原创,注重版权,转贴请注明原文地址:http://www.cnblogs.com/vincent-hv/p/3322966.html

 
1、配置程序使用资源:
System.setProperty("spark.executor.memary", "512m") 
 
2、创建自己的SparkContext对象:
val sc = new  SparkContext("master", "Job name", "$SPARK_HOME", "Job JARs")
3、创建RDDs
sc.parallelize(List(1, 2, 3))    // 将scala原生的集合转换成RDD
sc.textFile("directory/*.txt") // 将本地磁盘上的文本转换成RDD
sc.testFile("hdfs://namenode:port/path/file") // 将分布式文件系统上的文件转换成RDD
4、基本的RDD Transformations操作:
val nums = sc.parallelize(List(1, 2, 3))
val squares = nums.map(x => x * x) // {1, 4, 9}
val even = squares.filter(_ % 2 == 0) // {4}
nums.flatMap(x => 1 to x) // {1, 1, 2, 1, 2, 3}
5、基本的Actions操作:
val nums = sc.parallelize(List(1, 2, 3))
nums.collect() // Array(1, 2, 3)
nums.take(2) // Array(1, 2)
nums.count() // 3
nums.reduce(_ + _) // 6
nums.saveAsTextFile("hdfs://file.txt")
6、针对Key-Value对的作业:
val pair = (a, b)
pair._1 // a
pair._2 // b
 
7、一些Key-Value对的操作:
val pets = sc.parallelize(List(("cat", 1), ("dog", 1), ("cat", 2)))
pets.reduceByKey(_ + _) // {(cat, 3), (dog, 1)}
pets.groupByKey() // {(cat, Seq(1, 2)), (dog, 1)}
pets.sortByKey() // {(cat, 1), (cat, 2), (dog, 1)}
 
8、其他Key-Value的操作:
val visits = sc.parallelize(List(("index.html", "1.2.3.4"), ("about.html", "3.4.5.6"), ("index.html", 1.3.3.1)))
val pageNames = sc.parallelize(List(("index.html", "Home"), ("about.html", "About")))
visits.join(pageNames) // ("index.html", ("1.2.3.4", "Hmoe"))
// ("index.html", ("1.3.3.1", "Home"))
// ("about.html", ("3.4.5.6", "About"))
vlisits.cogroup(pageNames) // ("index.html", (Seq("1.2.3.4", 1.3.3.1), Seq("Home")))
// ("about.html", (Seq("3.4.5.6"), Seq("About")))
9、控制Reduce Tasks的数量:
所有的RDD组操作都可以选择设置第二个参数来控制tasks的数量
words.reduceByKey(_ + _, 5)
words.groupByKey(5)
visits.join(pageViews, 5)
当然,也可以通过设置spark.default.parallelism属性值来控制
 
10、使用本地变量:
在闭包中你使用任何外部变量都将自动的传递到集群:
val query = Console.readLine()
pages.filter(_.contains(query)).count()
一些注意事项:
  • Each task gets a new copy(updates aren`t sent bask)
  • 变量必须序列化
  • 不要使用一个对象的外部域
 
11、集群中有较大危害的示例:
12、其他RDD操作:
  • sample():确定样本子集
  • union():合并两个RDD
  • cartesian():交叉乘积
  • pipe():通过外部程序

【原】Spark 编程指南的更多相关文章

  1. Apache Spark 2.2.0 中文文档 - Spark 编程指南 | ApacheCN

    Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Datasets(数据集) RDD 操作 基础 传递 Functio ...

  2. SparkR(R on Spark)编程指南 含 dataframe操作 2.0

    SparkR(R on Spark)编程指南 Spark  2015-06-09 28155  1评论 下载为PDF    为什么不允许复制 关注iteblog_hadoop公众号,并在这里评论区留言 ...

  3. SparkR(R on Spark)编程指南 含 dataframe操作

    SparkR(R on Spark)编程指南 Spark  2015-06-09 28155  1评论 下载为PDF    为什么不允许复制 关注iteblog_hadoop公众号,并在这里评论区留言 ...

  4. Spark编程指南V1.4.0(翻译)

    Spark编程指南V1.4.0 ·        简单介绍 ·        接入Spark ·        Spark初始化 ·        使用Shell ·        在集群上部署代码 ...

  5. 转-Spark编程指南

    Spark 编程指南 概述 Spark 依赖 初始化 Spark 使用 Shell 弹性分布式数据集 (RDDs) 并行集合 外部 Datasets(数据集) RDD 操作 基础 传递 Functio ...

  6. Spark官方2 ---------Spark 编程指南(1.5.0)

    概述 在高层次上,每个Spark应用程序都由一个运行用户main方法的driver program组成,并在集群上执行各种 parallel operations.Spark提供的主要抽象是resil ...

  7. Spark编程指南分享

    转载自:https://www.2cto.com/kf/201604/497083.html 1.概述 在高层的角度上看,每一个Spark应用都有一个驱动程序(driver program).驱动程序 ...

  8. Spark编程指南

    1.在maven里面添加引用,spark和hdfs的客户端的. groupId = org.apache.spark artifactId = spark-core_2.9.3 version = 0 ...

  9. Apache Spark 2.2.0 中文文档 - Spark Streaming 编程指南 | ApacheCN

    Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Inp ...

随机推荐

  1. android monkey测试学习

    前提是:有安卓环境,能用adb命令 一.Monkey 测试的目的? 该工具可用于测试稳定性. 开发人员结合monkey 打印的日志 和系统打印的日志,解决测试中出现的问题 二.Monkey 测试的特点 ...

  2. java值传递与引用传递实例

    public class Test2 { public static void main(String[] args) { int[] arr=new int[5]; arr[0]=10; arr[1 ...

  3. 读取Execl表 导入数据库

    不知不觉博客园园林都两年多了,我是今年毕业的应届生,最近公司项目需要改动,很多的数据需要导入,很多的实体类需要些.考虑到这些问题自己写了两个winform版的小工具,一个是读取Execl数据导入数据库 ...

  4. 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现

      本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型   栈是 ...

  5. html5shiv.js和respond.min.js

    做页面常用的东西,写这里用的时候省点去找了... html5shiv:解决ie9以下浏览器对html5新增标签的不识别,并导致CSS不起作用的问题. respond.min:让不支持css3 Medi ...

  6. 探索 Java 热部署

    在 JAVA 开发领域,热部署一直是一个难以解决的问题,目前的 JAVA 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.对于某些大型的应用来 ...

  7. jQuery常用工具方法

    前面的话 jQuery提供一些与元素无关的工具方法,不必选中元素,就可以直接使用这些方法.如果理解原生javascript的继承原理,那么就能理解工具方法的实质.它是定义在jQuery构造函数上的方法 ...

  8. 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day

    团队作业8--第二次项目冲刺(Beta阶段)--5.21 second day Day two: 会议照片 项目进展 今天是beta冲刺的第二天,组长还在准备考试当中,我们继续做前端改进和后端安排,今 ...

  9. 201521123023《Java程序设计》第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 Q1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过 ...

  10. python3中的一些小改动

    Python 3.3中使用print是必须要括号因为在python3以上的版本中print不再是一条命令而是一个函数了.