当前位置:   article > 正文

头歌 Spark Shell基础_头歌本关任务:学会将程序提交到集群上执行。

头歌本关任务:学会将程序提交到集群上执行。

第1关:Spark Shell

任务描述

本关任务:查找张涛与王世昌的通话记录。

相关知识

Spark shell 提供了一种来学习该 API 比较简单的方式,以及一个强大的来分析数据交互的工具。在 Scala(运行于 Java 虚拟机之上,并能很好的调用已存在的 Java 类库)或者 Python 中它是可用的。

启动 Spark Shell

spark-shell 的本质是在后台调用了 spark-submit 脚本来启动应用程序的,在 spark-shell 中已经创建了一个名为 sc 的 SparkContext 对象,通过在 Spark 目录中运行以下的命令来启动它:

  1. ./bin/spark-shell

通过设定 local[N] 参数来启动本地 Spark 集群,其中 N 表示运行的线程数,或者用 * 表示使用机器上所有可用的核数。

  1. spark-shell --master local[N]
  2. spark-shell --master local[*]

在本地模式设定内存,如设置本地进程使用 2GB 内存。

 
  1. spark-shell --driver-memory 2g --master local[*]

集群模式启动,设置本地进程使用 1GB 内存,CPU 数为 3 核:

 
  1. spark-shell --master spark://linux01:7077 --executor-memory 1g --total-executor-cores 3

如果 spark-shell 需要引用一些其他的 jar包(比如 MySQL jdbc),可以通过 --jars 引用它;或者将 jar 包的路径添加到 classpath。

Spark Shell

Spark Shell 操作

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

让我们从 Spark 源目录中的 README 文件来创建一个新的 Dataset: 首先在当面目录下创建一个名为 data.txt 的文件,文件内容如下:

 
  1. 菜中路,梁鹏,13799999999,15778423030,2017-06-28 06:29:22,2017-06-28 06:32:46,204,宁夏回族自治区,陕西省
  2. 刘飞飞,刘能宗,15732648446,18620192711,2018-01-04 12:18:55,2018-01-04 12:25:38,403,辽宁省,广西壮族自治区
  3. 刘能宗,张阳,18620192711,17731088562,2017-12-15 14:57:23,2017-12-15 15:01:32,249,云南省,四川省
  4. 梁鹏,邓二,15778423030,13666666666,2017-08-08 13:33:45,2017-08-08 13:37:13,208,山西省,重庆市
  5. 张倩,刘飞飞,15151889601,15732648446,2016-03-03 02:17:36,2016-03-03 02:19:33,117,新疆维吾尔自治区,天津市
  6. 刘飞飞,王世昌,15732648446,13269361119,2018-04-16 12:26:43,2018-04-16 12:31:41,298,西藏自治区,湖南省
  7. 杨力谋,王世昌,18301589432,13269361119,2016-07-17 11:22:30,2016-07-17 11:23:24,54,浙江省,黑龙江省
  8. 张涛,菜中路,15032293356,13799999999,2016-11-30 19:07:55,2016-11-30 19:14:45,410,澳门特别行政区,云南省
  9. 张倩,任宗阳,15151889601,15614201525,2016-08-21 10:54:24,2016-08-21 10:54:40,16,江西省,福建省
  10. 朱尚宽,刘飞飞,18332562075,15732648446,2016-05-14 15:36:56,2016-05-14 15:40:33,217,贵州省,香港特别行政区
  11. 张倩,郭美彤,15151889601,18641241020,2017-05-02 17:02:27,2017-05-02 17:03:18,51,天津市,河南省
  12. 刘能宗,唐会华,18620192711,13560190665,2018-04-30 18:31:06,2018-04-30 18:33:11,125,广东省,福建省
  13. 菜中路,郭美彤,13799999999,18641241020,2017-01-24 18:09:52,2017-01-24 18:11:03,71,台湾省,山西省
 
  1. # 加载 data.txt 文件
  2. val textFile = spark.read.textFile("data.txt")

,

打印次数据集的项数:

 
  1. textFile.count()

,

 
  1. textFile.first()

,

我们可以直接从 Dataset 中获取 values(值),通过调用一些 actions(动作),或者 transform(转换)Dataset 以获得一个新的。

查找刘飞飞的通话记录:

 
  1. val linesWithSpark = textFile.filter(line => line.contains("刘飞飞"))

,

查看 Dataset 数据集的内容:

 
  1. linesWithSpark.show()

,

将结果保存到 result 目录中:

 
  1. linesWithSpark.write.text("result")

退出界面:

 
  1. :quit

,

查看系统文件,我们会发现当前目录下生成了一个 result 的目录文件:

,

result 目录下的 part* 文件保存着我们最后的结果数据:

,

,

编程要求

在右侧命令行中读取 /data/workspace/myshixun 下的 phone.txt 文件的数据,查找张涛与王世昌之间的通话记录,并将统计结果保存到 /root/re 目录文件中。

phone.txt 文件数据如下:

邓二,张倩,13666666666,15151889601,2018-03-29 10:58:12,2018-03-29 10:58:42,30,黑龙江省,上海市
邓二张倩13666666666151518896012018-03-29 10:58:122018-03-29 10:58:4230黑龙江省上海市
用户名A用户名B用户A的手机号用户B的手机号开始时间结束时间

第一关答案:

  以下命令在控制台逐条输入就好了

spark-shell
val textFile = spark.read.textFile("/data/workspace/myshixun/phone.txt")
val zt_ws_records = textFile.filter(line =>(line.contains("张涛") && line.contains("王世昌")) || (line.contains("王世昌") && line.contains("张涛")))
zt_ws_records.write.text("/root/re")
:quit

第2关:spark-submit提交


任务描述

本关任务:学会将程序提交到集群上执行。

相关知识

为了完成本关任务,你需要掌握:1.了解spark-submit的参数。2.学会提交Spark程序在集群运行。

spark-submit 可以提交任务到 spark 集群执行,也可以提交到 hadoop 的 yarn 集群执行。

课程视频《spark-submit提交》

spark-submit参数
参 数介 绍
--master提交到哪里执行,如 standalone,local,yarn,mesos等
--name 应用程序的名称
--class应用程序的主类
--deploy-mode Driver 程序运行的地方,client 或者 cluster,默认是client
--driver-memory Driver内存,默认 1G
--executor-memory每个executor的内存,默认是1G

使用格式:

 
  1. ./bin/spark-submit
  2. --class
  3. --master
  4. --deploy-mode
  5. --conf
  6. ... # other options
  7. application-jar
计算圆周率
 
  1. cd /opt/spark/dist/bin
  2. ./spark-submit
  3. --master local
  4. --class org.apache.spark.examples.SparkPi
  5. /opt/spark/dist/examples/jars/spark-examples_2.11-2.2.0.jar

./spark-submit --master 本地模式 --class 程序运行的主类名 xxx.jar

编程要求

根据提示,在右侧编辑器补充代,将程序提交到spark上执行。

测试说明

平台会对你编写的代码进行测试:

jar包所在位置:

/root/project.jar

(点击测评的时候root目录下会有project.jar)

主类:Student 提交模式:local

预期输出:

(bj,88)(sh,67)(gz,92)


开始你的任务吧,祝你成功!

第二关答案:

  1. #!/bin/bash
  2. cp -r Spark/SparkRDD/target/project.jar /root
  3. cd /opt/spark/dist/bin
  4. #********** Begin **********#
  5. ./spark-submit \
  6. --class Student \
  7. --master local \
  8. /root/project.jar
  9. #********** End **********#

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/780777
推荐阅读
相关标签
  

闽ICP备14008679号