第一

概论

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. ubuntu16.04下zabbix安装和配置

    介绍 Zabbix是用于网络和应用的开源监控软件. 它提供从服务器,虚拟机和任何其他类型的网络设备收集的数千个度量的实时监控. 这些指标可以帮助您确定IT基础架构的当前运行状况,并在客户投诉之前检测硬 ...

  2. <操作系统>进程和线程

    进程 定义: 一个正在执行的程序: 一个正在计算机上执行的程序实例; 能分配给处理器并由处理器执行的实体: 一个由一组执行指令,一个当前状态和一组相关的系统资源表征的活动单元. 进程的基本元素:程序代 ...

  3. ubuntu 解决TXT文本的乱码的问题。

    windows 系统上编辑的 txt 文本,在ubuntu上出现 乱码,我是这样解决的 1.terminal上输入以下命令: gsettings set org.gnome.gedit.prefere ...

  4. Zephyr的Logging

    1 前言 刚接触Zephyr,两眼一抹黑,光是阅读代码对系统没什么概念.还需要通过一些日志了解系统的运行机制,以及各种内核行为. 这就需要借助系统的Logging,大体分为两部分System Logg ...

  5. 【vue】chrome已安装Vue Devtools在控制台却无显示

    chrome已安装Vue Devtools在控制台却无显示的解决: 在点亮Vue Devtools图标后,控制台没有vue解读显示. 原因:脚手架配置NODE_ENV直接定义为了production版 ...

  6. 【LeetCode225】 Implement Stack using Queues★

    1.题目 2.思路 3.java代码 import java.util.LinkedList; import java.util.Queue; public class MyStack { priva ...

  7. POJ3714 Raid 分治/K-D Tree

    VJ传送门 简要题意:给出两个大小均为\(N\)的点集\(A,B\),试在\(A\)中选择一个点,在\(B\)中选择一个点,使得它们在所有可能的选择方案中欧几里得距离最小,求出这个距离 下面给出的两种 ...

  8. NOI Day1线上同步赛梦游记

    Preface 第一次体验NOI,虽然不是正式选手,但是打打同步赛还是挺涨姿势的,也算是体验了一把. Day1很爆炸,一方面是NOI题目的难度高于自身的水平,另一方面也出现了比较大的失误,T1一个数组 ...

  9. Tensorflow实例:利用LSTM预测股票每日最高价(一)

    RNN与LSTM 这一部分主要涉及循环神经网络的理论,讲的可能会比较简略. 什么是RNN RNN全称循环神经网络(Recurrent Neural Networks),是用来处理序列数据的.在传统的神 ...

  10. 线上分享-- 基于DDD的.NET开发框架-ABP介绍

    前言 为了能够帮助.Net开发者开拓视野,更好的把最新的技术应用到工作中,我在3月底受邀到如鹏网.net训练营直播间为各位学弟学妹们进行ABP框架的直播分享.同时为了让更多的.NET开发者了解ABP框 ...