《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 安装并启动 ...
随机推荐
- 搭建OpenResty(Nginx+Lua)
这篇文章是一个多月前写的,当时之所以搭建这个是为了最大程度上发挥Nginx的高并发效率(主要是结合lua脚本),参考的话,主要参考张开涛先生写的跟开涛学Nginx+lua系列文章,地址为:https: ...
- [转]ubuntu下解压zip文件
1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist ...
- MongoDB数据库中查询数据(下)
MongoDB数据库中查询数据(下) 在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一 ...
- docker核心概念(镜像、容器、仓库)及基本操作
概要 docker是一种linux容器技术.容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求.可简单理解为一种沙盒 .每个容器内运行一个应用,不同的容 ...
- Android Studio 导入工程
最简单的方式 等待加载完就好了 第二种方式 在导入别人的android studio项目(假设为项目A)时,会遇到gradle不一致的情况,以下简短介绍解决方法: 1. 打开要导入的项目的目录,删除下 ...
- NPOI DataSet导出excel
/// <summary> /// DataSet导出到Excel的MemoryStream /// </summary> /// <param name="d ...
- 阿里巴巴Java开发规约插件p3c详细教程及使用感受 - 转
http://www.cnblogs.com/han-1034683568/p/7682594.html
- 解决PowerDesigner 16 Generate Datebase For Sql2005/2008 对象名sysproperties无效的问题
在PowerDesigner 16 中生成的sql语句,在执行的时候报错:对象名sysproperties 无效的错误;造成此问题的原因是由于Sql 2005.2008 删除了系统表 sysprope ...
- LiveCharts文档-3开始-2基础
原文:LiveCharts文档-3开始-2基础 LiveCharts文档-3开始-2基础 基本使用 LiveCharts设计的很容易使用,所有的东西都可以自动的实现更新和动画,库会在它觉得有必要更新的 ...
- WPF中的DoubleAnimation
原文:WPF中的DoubleAnimation WPF中的DoubleAnimation ...