第一

概论

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. 搭建OpenResty(Nginx+Lua)

    这篇文章是一个多月前写的,当时之所以搭建这个是为了最大程度上发挥Nginx的高并发效率(主要是结合lua脚本),参考的话,主要参考张开涛先生写的跟开涛学Nginx+lua系列文章,地址为:https: ...

  2. [转]ubuntu下解压zip文件

    1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist ...

  3. MongoDB数据库中查询数据(下)

    MongoDB数据库中查询数据(下) 在find中,options参数值为一个对象,用来设置查询数据时使用的选项,下面我们来对该参数值对象中可以使用的属性进行介绍: 1. fields; 该属性值为一 ...

  4. docker核心概念(镜像、容器、仓库)及基本操作

    概要 docker是一种linux容器技术.容器有效的将由单个操作系统挂管理的资源划分到孤立的组中,以便更好的在组之间平衡有冲突的资源使用需求.可简单理解为一种沙盒 .每个容器内运行一个应用,不同的容 ...

  5. Android Studio 导入工程

    最简单的方式 等待加载完就好了 第二种方式 在导入别人的android studio项目(假设为项目A)时,会遇到gradle不一致的情况,以下简短介绍解决方法: 1. 打开要导入的项目的目录,删除下 ...

  6. NPOI DataSet导出excel

    /// <summary> /// DataSet导出到Excel的MemoryStream /// </summary> /// <param name="d ...

  7. 阿里巴巴Java开发规约插件p3c详细教程及使用感受 - 转

    http://www.cnblogs.com/han-1034683568/p/7682594.html

  8. 解决PowerDesigner 16 Generate Datebase For Sql2005/2008 对象名sysproperties无效的问题

    在PowerDesigner 16 中生成的sql语句,在执行的时候报错:对象名sysproperties 无效的错误;造成此问题的原因是由于Sql 2005.2008 删除了系统表 sysprope ...

  9. LiveCharts文档-3开始-2基础

    原文:LiveCharts文档-3开始-2基础 LiveCharts文档-3开始-2基础 基本使用 LiveCharts设计的很容易使用,所有的东西都可以自动的实现更新和动画,库会在它觉得有必要更新的 ...

  10. WPF中的DoubleAnimation

    原文:WPF中的DoubleAnimation WPF中的DoubleAnimation                                                         ...