第一

概论

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快速大数据分析》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. Java并发(六)线程池监控

    目录 一.线程池监控参数 二.线程池监控类 三.注意事项 在上一篇博文中,我们介绍了线程池的基本原理和使用方法.了解了基本概念之后,我们可以使用 Executors 类创建线程池来执行大量的任务,使用 ...

  2. ubuntu系统的谷歌浏览器的安装

    Ubuntu 系统通过一下四步能安装谷歌浏览器 1. sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/a ...

  3. TCP/IP协议--TCP协议概括和TCP连接的建立和终止

    TCP提供一种面向连接的.可靠的字节流服务.面向连接指,发送和接收方在交换数据前必须建立一个TCP连接.顺便说下,一个TCP连接只有两方,因此广播和多播是不能应用于TCP的.字节流指,两个应用程序通过 ...

  4. 使用Windows API进行串口编程

    使用Windows API进行串口编程   串口通信一般分为四大步:打开串口->配置串口->读写串口->关闭串口,还可以在串口上监听读写等事件.1.打开和关闭串口Windows中串口 ...

  5. RocketMQ阅读注意

    1 队列个数设置 producer发送消息时候设置,特别注意:同一个topic仅当第一次创建的时候设置有效,以后修改无效,除非修改broker服务器上的consume.json文件,

  6. mysql的聚簇索引与非聚簇索引的简短总结

    [原文]https://www.jianshu.com/p/72763d47aa1a 在mysql数据库中,myisam引擎和innodb引擎使用的索引类型不同,myisam对应的是非聚簇索引,而in ...

  7. 关于 CSLA 服务器部署WCF访问出错的问题

    MDAA项目 在以前的项目中,只要部署,从来没有发生过 通过WCF访问出错的问题,但是此次却出现如下问题: 2018-04-21 13:45:39,744 [119] ERROR Galaxy.OTC ...

  8. Intel x86_64 Architecture Background 1

    首先讲一下什么是Intel x86,x86是指intel的开发的一种32位指令集,从386开始时代开始的一直沿用至今,是一种cisc指令集.x84_64是x86 CPU开始迈向64位的时候,有2选择: ...

  9. supervisord监控服务必备命令

    supervisord(http://supervisord.org/introduction.html)是一个非常优秀的进程管理工具,使用Python开发.它可以在类UNIX系统的方式让用户来准确地 ...

  10. 【亲测有效】Github无法访问或者访问速度的解决方案

    我相信,很多朋友都遇到了 Github 访问速度过慢的问题,我也是在此记下笔记,方便以后拿来使用. 第一步.修改Hosts 通过问题的搜索了解到 github 访问很慢一般通过修改 hosts 文件解 ...