1. 初始化Spark

import org.apache.spark.{SparkContext, SparkConf}

val conf=new SparkConf().setAppName("RDD1").setMaster("local")
val sc=new SparkContext(conf)

2. 创建RDD的方法

内存:Parallelize 或者 makeRDD

外部文件:textFile

//1.  both Parallelize and makeRDD could create RDD from In-Memory
val distData=sc.parallelize(data) // parallelize
val distData1=sc.makeRDD(data) // makeRDD //2 textFile could create RDD from files
val distFile=sc.textFile("E:/Java_WS/ScalaDemo/data/wc.txt")

3. 保存Spark结果

RDD可以使用 saveAsTextFile()保存下来;

非RDD,可以借助 Parallelize/makeRDD转化为RDD,再保存下来

myRDD.saveTextFile("Path/test.txt")

val precision=new Array[String](100)
sc.parallelize(precision).saveAsTextFile("E:/Spark/models/precision.txt")

4. 键值对

下面两者等价:

myRDD. map (s=> (s,1))
myRDD. map (_,1)

reduceByKey 和sortByKey、groupByKey

distFile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println)
distFile.flatMap(_.split(" ")).map(s=>(s,1)).sortByKey().collect().foreach(println)
distFile.flatMap(_.split(" ")).map(s=>(s,1)).groupByKey().foreach(println)

1)返回key 以及 每个key的个数 (key, cnt)

2)返回 (key,value) 排序后的

3)返回(key, (value1,value2...))

5. RDD 持久化  

persist() 或 cache()

unpersist() 可以删除缓存RDD

6. 广播变量和累加器

  • 通过sc.broadcast(v) 和 sc.accumulator(初始值,comments)定义
  • 通过value访问其值。
  • 广播变量不能修改了
  • 累加器只能通过add 或者 +=修改
//SparkContext.broadcast(v)  is a broadcast variable, could replace v in any place of the cluster
val broadcastVar=sc.broadcast(Array(1,2,3))
println(broadcastVar.value(0),broadcastVar.value(1),broadcastVar.value(2)) val accum=sc.accumulator(0,"My Accumulator")
sc.parallelize(Array(1,2,3,4)).foreach(x=>accum+=x)
println(accum.value)

7. UDF 和UDAF

8. 提交spark任务

例子:spark-submit (详细参考

./bin/spark-submit \
--master yarn-cluster \
--num-executors 100 \
--executor-memory 6G \
--executor-cores 4 \
--driver-memory 1G \
--conf spark.default.parallelism=1000 \
--conf spark.storage.memoryFraction=0.5 \
--conf spark.shuffle.memoryFraction=0.3 \
--class YourClass
YourJar
JarParameter1
JarParameter2
  • num-executors

参数说明:用于设置Spark作业总共要用多少个Executor进程来执行。如果不设置默认会使用很少,影响作业的效率。

  • executor-memory

参数说明:用于设置每个Executor进程的内存。一般来说设置4G~8G较为合适。

  • executor-cores

参数说明:该参数用于设置每个Executor进程的CPU core数量,决定task的执行效率。一般2~4个。

  • driver-momory

参数说明:该参数用于设置Driver进程的内存。通常不需要设置,或者设置为1G即可。

  • spark.default.parallelism

参数说明:该参数用于设置每个stage的默认task数量。需要设置,默认的话会根据HDFS的blocks数设置,偏少。

建议设置为num-executors * executor-cores的2~3倍较为合适

  • spark.storage.memoryFraction

参数说明:该参数用于设置RDD持久化数据在Executor内存中能占的比例,默认是0.6

  • spark.shuffle.memoryFraction

参数说明:该参数用于设置shuffle过程中一个task拉取到上个stage的task的输出后,进行聚合操作时能够使用的Executor内存的比例,默认是0.2

Spark 编程基础的更多相关文章

  1. Spark编程基础_RDD初级编程

    摘要:Spark编程基础_RDD初级编程 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...

  2. Spark编程基础_RDD编程

    RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.RDD具有数据流模型的特 ...

  3. 2.3 Scala面向对象编程基础

    一.类 1.类的定义 Unit表示什么都不返回 方法体最后一句的值,就是方法的返回值. 2.类成员的可见性 3.方法的定义方式 定义方法的时候加圆括号,调用时可以加圆括号c.getValue()也可以 ...

  4. Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spar ...

  5. Spark入门实战系列--3.Spark编程模型(下)--IDEA搭建及实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 . 安装IntelliJ IDEA IDEA 全称 IntelliJ IDEA,是java语 ...

  6. Spark中文指南(入门篇)-Spark编程模型(一)

    前言 本章将对Spark做一个简单的介绍,更多教程请参考:Spark教程 本章知识点概括 Apache Spark简介 Spark的四种运行模式 Spark基于Standlone的运行流程 Spark ...

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

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

  8. Spark编程模型

    主要参考: Spark官方文档:http://spark.apache.org/docs/latest/programming-guide.html 炼数成金PPT:02Spark编程模型和解析 本文 ...

  9. Scala编程基础

    Scala与Java的关系... 4 安装Scala. 4 Scala解释器的使用... 4 声明变量... 5 数据类型与操作符... 5 函数调用与apply()函数... 5 if表达式... ...

随机推荐

  1. HTML5商城开发一 楼层滚动加载数据

    对于楼层加载在以前只是个想法,从来没实现过,刚好项目中碰到,再此总结一下 场景:HTML5,局部商品列表信息滚动(局部滚动条) 1.通过jq设置subCategoryScroll的高度为屏幕显示高度( ...

  2. Winform调用系统的剪切,复制,粘贴文件功能

    // <summary> /// 复制或剪切文件至剪贴板(方法) /// </summary> /// <param name="files"> ...

  3. eap

    本文介绍了eap  

  4. noi题库(noi.openjudge.cn) 1.5编程基础之循环控制T36——T45

    T36 计算多项式的值 描述 假定多项式的形式为xn+xn-1+-+x2+x+1,请计算给定单精度浮点数x和正整数n值的情况下这个多项式的值. 输入 输入仅一行,包括x和n,用单个空格隔开.x在flo ...

  5. C/C++实践笔记_001Helloworld

    1.void返回值为空,int返回值Linux c,c++中,Main函数可以返回也可以不返回,普通函数必须返回.C编译松散,很容易结果出错,C++编译严格一些,结果一般会正确C语言不返回不会报错,但 ...

  6. .net程序员转行做手游开发经历(三)

    这次就主要讲讲我们开发的过程. 策划是我们团队的一个人成员专门负责,我们几个算是出谋划策.我这边的理解是,策划首先需要对所做的事情一定要有一定的把握,意思是尽可能的想到这件事情的影响范围,类似项目管理 ...

  7. .net异步编程

    现在电脑大部分都是多核心,在处理多线程方便有很大优势,异步调用方法的时候可以立即返回执行其他程序,进行异步编程会让程序运行效率更高. 我也是刚刚关注异步编程方面知识,也有很多不是很理解,所以想向大神请 ...

  8. centos7 安装nginx和php5.6.25遇到 无法访问php页面 报错file not found 问题解决

    php-fpm安装完成,nginx安装完成 netstap -ntl| 发下端口正常开启 iptables -L 返现9000端口已经开放 ps -aux|grep nginx 发下nginx进程正常 ...

  9. [BZOJ1061][Noi 2008]志愿者招募(网络流)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1061 分析: 神题不解释,只能欣赏:https://www.byvoid.com/bl ...

  10. word2vec使用说明补充(google工具包)

    [本文转自http://ir.dlut.edu.cn/NewsShow.aspx?ID=253,感谢原作者] word2vec是一个将单词转换成向量形式的工具.可以把对文本内容的处理简化为向量空间中的 ...