pySpark启动与执行例子

启动spark

注:必须先启动Hadoop,但只启动hdfs即可,不用start-all,使用start-dfs.sh即可

检查

jps

在Master节点上出现了NameNode、ResourceManager、SecondaryNameNode;

在主节点启动:

cd /usr/data2/program/spark/spark/sbin/

./start-all.sh

检查

jps

在Master节点上出现了Master;

在工作节点出现了Worker

启动pyspark

注:必须先启动spark

在主节点机执行即可

在 ./spark/bin目录下,启动pyspark

或者直接执行pyspark (因为配置了环境变量)

进入python模式下的spark

报错:

pyspark依赖python环境,ubuntu自带的python是2.7

要先安装python3,可参考python文章,安装miniconda

创建pyspark的独立python环境

所有节点机都要配置

使用conda就很好创建

克隆一个spark独立python环境

(base) root@pc2-node2:~# conda info -e

# conda environments:

#

base                  *  /usr/data2/program/conda/miniconda3

spark                    /usr/data2/program/conda/miniconda3/envs/spark

克隆完毕后,

/usr/data2/program/conda/miniconda3/envs/spark/bin/python

这个就是spark专用的环境的python路径

配置spark的python环境

所有节点机都要配置

cd /usr/data2/program/spark/spark/conf/

vi spark-env.sh

增加

export PYSPARK_PYTHON=/usr/data2/program/conda/miniconda3/envs/spark/bin/python

重启spark、

重新进入pyspark

主节点机执行

./stop-all.sh

./start-all.sh

然后执行pyspark进入

这样就是成功进入pyspark了

sc说明

UI服务说明

直接进入pyspark,看到sc是local本地模式。这种模式没有启用集群。

适合本地调试,验证。速度快。

同时,可以看到,作业开启了一个UI服务,端口是4040

通过 http://192.168.0.11:4040

访问

再启动一个pyspark,发现会使用4041端口来开启这个pyspark的UI服务

例子:

spark字符串统计

样例数据

Apache Spark is a fast and general-purpose cluster computing system. It provides high-level APIs in Java, Scala, Python and R, and an optimized engine that supports general execution graphs.

Apache Spark provides programmers with an application programming interface centered on a data structure called the resilient distributed dataset (RDD), a read-only multiset of data items distributed over a cluster of machines, that is maintained in a fault-tolerant way.

查看数据

在/usr/data2/program/spark/testData

创建这个文件:

sparkWordCount.txt

里面的内容是样例数据,作为数据准备

获取spark上下文

在pyspark启动后,会自动增加一个变量叫sc,这个变量就是spark上下文,可以直接使用

这个上下文可以用来操作spark环境的资源,是pyspark封装好了。

执行spark任务

本地文件

这里任务,是进行单词数量统计

sc.textFile('file:///usr/data2/program/spark/testData/sparkWordCount.txt') \

.flatMap(lambda line: line.split(" ")) \

.map(lambda x: (x, 1)) \

.reduceByKey(lambda a, b: a + b).collect()


单词数量就统计完毕了。

上述命令也可以拆分为执行

textFile = sc.textFile('file:///usr/data2/program/spark/testData/sparkWordCount.txt')

mapReduce = textFile \

.flatMap(lambda line: line.split(" ")) \

.map(lambda x: (x, 1)) \

.reduceByKey(lambda a, b: a + b)

上面的命令,并不会执行,而是做准备,有点类似TensorFlow的处理流程

mapReduce.collect()

这句话是真正执行spark运算的命令

执行后,可以在pyspark的UI里,看到历史job

执行spark任务

HDFS文件

在linux里

先把文件上传到HDFS

hadoop fs -mkdir -p /spark/testData

hadoop fs -put /usr/data2/program/spark/testData/sparkWordCount.txt  /spark/testData/sparkWordCount.txt

查看文件

文件上传OK, 然后执行sc的map、reduce任务

在pyspark里:

sc.textFile('hdfs://192.168.0.11:9000/spark/testData/sparkWordCount.txt') \

.flatMap(lambda line: line.split(" ")) \

.map(lambda x: (x, 1)) \

.reduceByKey(lambda a, b: a + b).collect()

注:需要指定hdfs集群的其中一个节点地址,因为没有进行默认路径配置。

还可以使用RDD进行路径的配置

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值