《spark快速大数据分析》
第一
概论
1.spark的特点
适用多种不同分布式平台的场景,包括批处理,迭代算法,交互式查询,流处理;
spark提供了python,scale,java等接口
2.spark的组件
spark的底层组件包括:独立调度器,Hadoop YARN,Apache Mesos
spark的内核包括:任务调度,内存管理,错误恢复,RDD
spark的顶层包括:spark sql,spark streaming,mlib,graphx
第二
环境搭建
1.说明:
spark是用scale语言编写的;运行在java的虚拟机上,所有安装spark之前需要安装jdk
2.步骤:
首先:安装JDK
下载JDK,再双击dmg文件安装。
再者:配置JDK
vim .bash_profile
export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home" export PATH=${JAVA_HOME}/bin:$PATH
source .bash_profile
再者:下载spark
下载地址为http://spark.apache.org/downloads.html,选择类型为Pre-build for Hadoop 2.7 and later
下载后的文件为spark-2.2.1-bin-hadoop2.7.tar
再者:解压spark压缩文件
cd ~/project
cp ~/Downloads/spark-2.2.1-bin-hadoop2.7.tar spark-2.2.1-bin-hadoop2.7.tar
tar -xf spark-2.2.1-bin-hadoop2.7.tar
ls
最后:启动
cd spark-2.2.1-bin-hadoop2.7
bin/pyspark
3.spark交互式应用
例如:启动pyspark后,依此输入以下命令:
lines = sc.textFile("README.md") python_lines = lines.filter(lambda line:"python" in line) python_lines.count() python_lines.first()
4.使用python构建独立的spark应用
例如:
cd ~/project/spark-2.2.1-bin-hadoop2.7
mkdir app
touch app/helloworld.py
vim app/helloworld.py
bin/spark-submit app/helloworld.py
第三
Spark集群
1.Spark集群启动步骤:
(1)用户通过spark-submit提交应用
(2)spark-submit启动驱动器程序,调用用户定义的main()方法
(3)驱动器与集群管理器通信,申请资源以启动执行器节点
(4)集群管理器为驱动器启动执行器节点
(5)驱动器将RDD操作发送给执行器
(6)执行器保存计算结果并发送给驱动器
(7)若果用户退出spark,则驱动器终止执行器进程,并通过集群管理器释放资源
2.使用spark-submit部署应用
(1)独立集群管理器
bin/spark-submit --master spark://host:7077 --executor-memory 10g my_script.py
(2)Hadoop YARN集群管理器
export HADOOP_CONF_DIR = /opt/hadoop/conf bin/spark-submit --master yarn --executor-memory 10g my_script.py
(3)Apache Mesos集群管理器
bin/spark-submit --master mesos://host:5050 --executor-memory 10g my_script.py
(4)本地单核
bin/spark-submit --master local --executor-memory 10g my_script.py
(5)本地多核
bin/spark-submit --master local[100] --executor-memory 10g my_script.py
(6)本地无限核
bin/spark-submit --master local[*] --executor-memory 10g my_script.py
第四
Spark的调优
1.配置Spark
(1)使用配置文件配置spark
#配置文件 spark.master local[4] spark.app.name "My Spark App" spark.ui.port 36000
#在命令中调用配置文件作为参数 bin/spark-submit --properties-file config.conf
(2)使用bin/spark-submit传递参数配置spark
bin/spark-submit --master local[4] --name "My Spark App" --conf spark.ui.port=36000
(3)使用代码显示配置spark
conf = new SparkConf() conf.set("spark.master", "local[4]") conf.set("spark.app.name", "My Spark App") conf.set("spark.ui.port", "36000") sc = SparkContext(conf)
2.Spark的执行步骤
(1)生成RDD的有向无环图
(2)物理执行RDD
3.Spark 的调试界面
(1)如果是独立集群器,则使用http://localhost:4040访问调试界面.
第五
使用Spark SQL进行数据查询
1.Spark SQL初始化与查询
例如
from pyspark.sql import HiveContext, Row #当不能引入hive依赖时 from pyspark.sql import SQLContext, Row hiveCtx = HiveContext(sc)input = hiveCtx.jsonFile(inputFile)input.registerTemplate("twssts")tweets_list = hiveCtx.sql("SELECT text, retweet_count, FROM tweets ORDER BY retweet_count LIMIT 10")tweets_text_list = tweets_list.map(lambda row:row.text)
第六
RDD的操作
1.操作RDD的步骤
(1)使用数据源创建RDD
(2)转化生成新RDD
(3)对中间重用结果RDD进行persist()操作
(4)使用RDD行动操作
例如:
#!/usr/bin/env/python from __future__ import print_function from pyspark.sql import SparkSession if __name__ == "__main__": spark = SparkSession.builder.appName("PythonALS").getOrCreate() sc = spark.sparkContext rdd = sc.textFile("app/test.txt") rdd.persist() row_count = rdd.count() print(row_count) first_line = rdd.first() print(first_line) spark.stop()
注意:spark的当前目录为根目录,即spark2.2.20-bin-hadoop
例如,求一个集合中所有值的平方和
《spark快速大数据分析》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- Java并发(六)线程池监控
目录 一.线程池监控参数 二.线程池监控类 三.注意事项 在上一篇博文中,我们介绍了线程池的基本原理和使用方法.了解了基本概念之后,我们可以使用 Executors 类创建线程池来执行大量的任务,使用 ...
- ubuntu系统的谷歌浏览器的安装
Ubuntu 系统通过一下四步能安装谷歌浏览器 1. sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/a ...
- TCP/IP协议--TCP协议概括和TCP连接的建立和终止
TCP提供一种面向连接的.可靠的字节流服务.面向连接指,发送和接收方在交换数据前必须建立一个TCP连接.顺便说下,一个TCP连接只有两方,因此广播和多播是不能应用于TCP的.字节流指,两个应用程序通过 ...
- 使用Windows API进行串口编程
使用Windows API进行串口编程 串口通信一般分为四大步:打开串口->配置串口->读写串口->关闭串口,还可以在串口上监听读写等事件.1.打开和关闭串口Windows中串口 ...
- RocketMQ阅读注意
1 队列个数设置 producer发送消息时候设置,特别注意:同一个topic仅当第一次创建的时候设置有效,以后修改无效,除非修改broker服务器上的consume.json文件,
- mysql的聚簇索引与非聚簇索引的简短总结
[原文]https://www.jianshu.com/p/72763d47aa1a 在mysql数据库中,myisam引擎和innodb引擎使用的索引类型不同,myisam对应的是非聚簇索引,而in ...
- 关于 CSLA 服务器部署WCF访问出错的问题
MDAA项目 在以前的项目中,只要部署,从来没有发生过 通过WCF访问出错的问题,但是此次却出现如下问题: 2018-04-21 13:45:39,744 [119] ERROR Galaxy.OTC ...
- Intel x86_64 Architecture Background 1
首先讲一下什么是Intel x86,x86是指intel的开发的一种32位指令集,从386开始时代开始的一直沿用至今,是一种cisc指令集.x84_64是x86 CPU开始迈向64位的时候,有2选择: ...
- supervisord监控服务必备命令
supervisord(http://supervisord.org/introduction.html)是一个非常优秀的进程管理工具,使用Python开发.它可以在类UNIX系统的方式让用户来准确地 ...
- 【亲测有效】Github无法访问或者访问速度的解决方案
我相信,很多朋友都遇到了 Github 访问速度过慢的问题,我也是在此记下笔记,方便以后拿来使用. 第一步.修改Hosts 通过问题的搜索了解到 github 访问很慢一般通过修改 hosts 文件解 ...