Spark学习散点总结
使用Spark 时,通常会有两种模式。
一、在交互式编程环境(REPL, a.k.a spark-shell)下实现一些代码,测试一些功能点。
二、像MapReduce 那样提前编写好源代码并编译打包(仅限 Java 或 Scala,Python 不需要),然后将程序代码通过spark-submit 命令提交到 YARN 集群完成计算。
spark-shell
启动 spark-shell 通常需要指定 master、executor 内存、executor 数量等参数。由于 YARN 集群有审计机制,每个人提交的 spark application 需要指定 name 参数,同时确保 name 是以个人的 LDAP 用户名为后缀。另外,如果你不确定 driver 是否有足够的内存能容纳一个 RDD 的计算结果,建议不要使用 RDD 的 collect 方法而使用其 take 方法,否则会使 driver 发生 OOM。
1.scala交互式编程环境
通过命令启动sprak-shell
/opt/tige/spark2/bin/spark-shell \
--master yarn-client \
--queue root.default \
--driver-memory 4g \
--executor-memory 8g\
--conf spark.dynamicAllocation.maxExecutors= \
--name spark_test_{your username}
启动spark后系统自动创建sc和sqlContext(HiveContext实例),可以使用它们来创建RDD或者DataFarme
2.使用Python交互式编程环境
通过命令pyspark
/opt/tiger/spark_deploy/spark2/bin/ipyspark --master yarn-client --queue root.default --driver-memory 4g --executor-memory 8g --num-executors --name spark_test_${your LDAP user name}
spark-submit
首先我们需要使用 Spark 的 API 实现一个拥有入口(main)的程序,然后通过 spark-submit 提交到 YARN 集群。
Scala 版本的 WordCount
import org.apache.spark.{SparkConf, SparkContext} object WordCount extends App {
val sparkConf = new SparkConf()
sparkConf.setAppName("spark_test_${your LDAP user name}")
sparkConf.setMaster("yarn-client")
sparkConf.set("spark.driver.memory", "4g")
sparkConf.set("spark.executor.memory", "8g")
sparkConf.set("spark.dynamicAllocation.initialExecutors", "")
sparkConf.set("spark.dynamicAllocation.maxExecutors", "")
val sc = new SparkContext(sparkConf)
val words = sc.textFile("/path/to/text/file")
val wordCount = words.map(word => (word, 1)).reduceByKey(_ + _).collect()
wordCount.foreach(println)
}完成代码编写与编译打包之后就可以通过 spark-submit 来提交应用了,命令如下:
/opt/tiger/spark_deploy/spark2/bin/spark-submit --master yarn-client --class WordCount your_spark_test.jar
- python版本的WordCount
from pyspark import SparkContext, SparkConf
from operator import add if __name__ == '__main__':
conf = SparkConf()
conf.setMaster('yarn-client')
conf.setAppName('spark_test_${your LDAP user name}')
conf.set("spark.driver.memory", "4g")
conf.set("spark.executor.memory", "8g")
conf.set("spark.dynamicAllocation.initialExecutors", "")
conf.set("spark.dynamicAllocation.maxExecutors", "")
sc = SparkContext(conf=conf) words = sc.textFile("/path/to/text/file")
wordCount = words.map(lambda word: (word, 1)).reduceByKey(add).collect()
for key, value in wordCount:
print key, value假设上面这段 Python 代码的文件名为 your_spark_test.py,那么提交这段代码到 YARN 集群的命令如下:
/opt/tiger/spark_deploy/spark2/bin/spark-submit --master yarn-client your_spark_test.py
Spark学习散点总结的更多相关文章
- Spark学习(一) -- Spark安装及简介
标签(空格分隔): Spark 学习中的知识点:函数式编程.泛型编程.面向对象.并行编程. 任何工具的产生都会涉及这几个问题: 现实问题是什么? 理论模型的提出. 工程实现. 思考: 数据规模达到一台 ...
- Spark学习笔记之SparkRDD
Spark学习笔记之SparkRDD 一. 基本概念 RDD(resilient distributed datasets)弹性分布式数据集. 来自于两方面 ① 内存集合和外部存储系统 ② ...
- spark学习笔记总结-spark入门资料精化
Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...
- 用Spark学习FP Tree算法和PrefixSpan算法
在FP Tree算法原理总结和PrefixSpan算法原理总结中,我们对FP Tree和PrefixSpan这两种关联算法的原理做了总结,这里就从实践的角度介绍如何使用这两个算法.由于scikit-l ...
- 用Spark学习矩阵分解推荐算法
在矩阵分解在协同过滤推荐算法中的应用中,我们对矩阵分解在推荐算法中的应用原理做了总结,这里我们就从实践的角度来用Spark学习矩阵分解推荐算法. 1. Spark推荐算法概述 在Spark MLlib ...
- Spark学习笔记2(spark所需环境配置
Spark学习笔记2 配置spark所需环境 1.首先先把本地的maven的压缩包解压到本地文件夹中,安装好本地的maven客户端程序,版本没有什么要求 不需要最新版的maven客户端. 解压完成之后 ...
- Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)
Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...
- 2019-1-24 Spark 学习 --总体架构
2019-1-24 Spark 学习 --总体架构 新建 模板 小书匠 1548339392539.jpg 1548339357270.jpg 1548339372461.jpg 1548339345 ...
- redis学习-散列表常用命令(hash)
redis学习-散列表常用命令(hash) hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及 ...
随机推荐
- ref:一系列用于Fuzzing学习的资源汇总
ref:http://www.freebuf.com/articles/rookie/169413.html 一系列用于Fuzzing学习的资源汇总 secist2018-04-30共185833人围 ...
- LibreOJ#143 质数判定 [Miller_Rabin]
题目传送门 质数判定 题目描述 判定输入的数是不是质数. 输入格式 若干行,一行一个数 x. 行数不超过 $1.5\times 10^4$ 输出格式 对于输入的每一行,如果 x是质数输出一行 Y,否则 ...
- .apk文件的MIME类型
IIS7中下载apk文件会报404错误. 找到:IIS目录,MIME类型 添加.apk文件的MIME类型. 文件扩展名:.apk MIME类型:application/vnd.android.pack ...
- linuxmint - setup - 搜狗输入法
安装好linuxmint18后,官网下载搜狗输入法安装包安装.安装成功后,发现缺失部分界面,包括输入候选框,软件设置,fcitx设置都不太正常. 解决: 安装:fcitx-ui-classic 另: ...
- VS2010安装HTML5插件
步骤: 1. 下载 插件 2.拷贝文件里面德尔html_5.xsd到 D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packa ...
- POJ 3384 Feng Shui (半平面交)
Feng Shui Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3743 Accepted: 1150 Speci ...
- TF卡翻盖式卡座
- [置顶] linux常用命令大全
SSH 密令控制台 user/pwd 一:停止tomcat 1,cd .. 进入根目录 2,cd home/ 3,ll 4,cd bin/ 进入tomcat bin目录 5,ll 6,ps -ef | ...
- 数据库连接池中是将connection放进threadlocal里的
我有几点不太明白的,望各位大侠指教下.1.j2ee的应用中,有一个用户请求就会启动一个线程.而如果我们把connection放在Threadlocal里的话,那么我们的程序只需要一个connectio ...
- Python break 语句
Python break 语句 Python break语句,就像在C语言中,打破了最小封闭for或while循环. break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归 ...