《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 安装并启动 ...
随机推荐
- uploadify 302 上传图片报错
1.uploadify 302 上传图片报错 2.解决方式 一 uploadify 302 上传图片报错 备注:谷歌浏览器不报错,只在火狐报错. 二 解决方式 原因:插件调用,不能自带身份验证信息 ...
- liunx基础知识
学习Linux系统的重要性应该不用多说,下面我就对Linux的基础知识进行一个全面而又简单的总结.不过建议大家还是装个Linux系统多练习,平时最好只在Linux环境下编程,这样会大有提高. linu ...
- linux调度器源码分析 - 运行(四)
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言 之前的文章已经将调度器的数据结构.初始化.加入进程都进行了分析,这篇文章将主要说明调度器是如何在程序稳定运 ...
- golang 转换markdown文件为html
使用blackfriday go get -u gopkg.in/russross/blackfriday.v2 go: package markdown import ( "fmt&quo ...
- 苹果与Windows双系统时间不同步的解决办法
步骤:打开C盘>Windows>System32,找到cmd.exe,右键以管理员的身份运行. Reg add HKLM\SYSTEM\CurrentControlSet\Control\ ...
- CF875F Royal Questions 基环树、Kruskal
题目传送门:http://codeforces.com/problemset/problem/875/F 题意:有$N$个王子和$M$个公主,每个公主或王子都只能选择至多一个王子或公主作为自己的结婚对 ...
- 【php增删改查实例】第十三节 - EasyUI列格式化
因为easyUI的datagrid组件是横着一格一格加载数据的,一行加载好了之后才会去加载下一行.所谓的列格式化,就是在加载某一列的所有单元格时,对即将加载到这些单元格的数据进行二次包装. 比如,我们 ...
- Docker 小记 — Docker Engine
前言 用了 Docker 方才觉得生产环境终于有了他该有的样子,就像集装箱普及之后大型货轮的价值才逐渐体现出来,Docker 详细说明可查阅"官方文档".本篇为 Docker En ...
- 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--请求处理结果适配篇(7/8)
文章目录 前情概要 前面一大坨一大坨的代码把route.controller.action.attribute都搞完事儿了,最后剩下一部分功能就是串起来的调用. 那接下就说个说第二个中间件,也是最后一 ...
- linux下syslog-ng日志集中管理服务部署记录
syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点 ...