单机模式Spark 安装部署(Haopp2.7+ubuntu18.04)

安装Scala-2.12.8


进入安装路径,获取Scala

cd /home/cz/data/soft 

wget https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.tgz

解压

tar -zxvf scala-2.12.8.tgz

配置环境变量

sudo vim /etc/profile

export SCALA_HOME=/home/cz/data/soft/scala-2.12.8 #你的Scala所在路径
export PATH=:$SCALA_HOME/bin

 

保存退出、是环境变量生效

source /etc/profile

验证是否安装成功

scala -version

如下,说明安装成功

 

安装Spark-2.4.0

进入需要安装的目录下,下载Spark,解压,这里选择清华大学镜像源

cd /home/cz/data/soft

wget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz

tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz

更改文件名

mv spark-2.4.0-bin-hadoop2.7 spark-2.4.0

配置环境变量

sudo vim /etc/profile

export SCALA_HOME=/home/cz/data/soft/spark-2.4.0#你的Spark所在路径
export PATH=:$SCALA_HOME/bin

配置Spark

修改Spark目录下的conf目录下的配置文件

拷贝配置文件副本

cp spark-env.sh.template spark-env.sh

sudo vim spark-env.sh

添加如下内容

# Java 所在目录
export JAVA_HOME=/home/cz/data/soft/jdk1.8
# Scala所在目录
export SCALA_HOME=/home/cz/data/soft/scala-2.12.8
# Hadoop所在目录
export HADOOP_HOME=/home/cz/data/soft/hadoop
# Hadoop配置文件的目录 
export HADOOP_CONF_DIR=/home/cz/data/soft/hadoop/etc/hadoop
# Spark临时文件目录
SPARK_LOCAL_DIRS=/home/cz/data/soft/spark-2.4.0/tmp
# 本机IP地址
SPARK_LOCAL_IP=localhost

启动Spark,进入Spark目录的sbin目录下,执行启动命令

./start-all.sh

打印如下信息

在浏览器地址栏输入

localhost:8080

Spark启动成功

Spark入门练习

运行自带用例,bin目录下执行 run-example SparkPi

使用Spark Shell 进行交互式分析

先启动hadoop

启动spark

启动Spark Shell

spark-shell 

Spark 的主要抽象是一个称为 Dataset 的分布式的 item 集合。Datasets 可以从 Hadoop 的 InputFormats(例如 HDFS文件)或者通过其它的 Datasets 转换来创建。让我们从 Spark 源目录中的 README 文件来创建一个新的 Dataset:

val textFile = spark.read.textFile("file:///home/cz/data/soft/spark-2.4.0/README.md")

执行一些简单的actions(动作), 或者 transform(转换)

textFile.count()

textFile.first()

调用 filter 以返回一个新的 Dataset, 它是文件中的 items 的一个子集。

val linesWithSpark = textFile.filter(line => line.contains("Spark"))

链式操作 transformation(转换)和 action(动作)

textFile.filter(line => line.contains("Spark")).count() 

基于Python的交互式分析

./bin/pyspark

textFile = spark.read.text("file:///home/cz/data/soft/spark-2.4.0/README.md")

textFile.count()

textFile.first()

linesWithSpark = textFile.filter(textFile.value.contains("Spark"))

Dataset actions(操作)和 transformations(转换)可以用于更复杂的计算。例如, 统计出现次数最多的行

textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)

第一个 map 操作创建一个新的 Dataset, 将一行数据 map 为一个整型值。在 Dataset 上调用 reduce 来找到最大的行计数。参数 mapreduce 是 Scala 函数(closures), 并且可以使用 Scala/Java 库的任何语言特性。例如, 我们可以很容易地调用函数声明, 我们将定义一个 max 函数来使代码更易于理解

import java.lang.Math

textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))

Spark 可以很容易实现 MapReduce

val wordCounts = textFile.flatMap(line => line.split(" ")).groupByKey(identity).count()

在这里, 我们调用了 flatMap 以 transform 一个 lines 的 Dataset 为一个 words 的 Dataset, 然后结合 groupByKeycount 来计算文件中每个单词的 counts 作为一个 (String, Long) 的 Dataset pairs。要在 shell 中收集 word counts, 我们可以调用 collect

wordCounts.collect()

python方式

textFile = spark.read.text("file:///home/cz/data/soft/spark-2.4.0/README.md")

from pyspark.sql.functions import *

textFile.select(size(split(textFile.value, "\s+")).name("numWords")).agg(max(col("numWords"))).collect()

wordCounts = textFile.select(explode(split(textFile.value, "\s+")).alias("word")).groupBy("word").count()

Spark 还支持 Pulling(拉取)数据集到一个群集范围的内存缓存中。例如当查询一个小的 “hot” 数据集或运行一个像 PageRANK 这样的迭代算法时, 在数据被重复访问时是非常高效的。举一个简单的例子, 让我们标记我们的 linesWithSpark 数据集到缓存中

linesWithSpark.cache()

linesWithSpark.count()

linesWithSpark.count()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值