实验七

实验七(用Scala编写Spark应用程序,用Java编写Spark应用程序)

在这里插入图片描述
一、官网下载安装Scala:scala-2.12.8.tgz
https://www.scala-lang.org/download/

tar -zxvf scala-2.12.8.tgz -C /opt/modulemv scala-2.12.8 

scala测试:scala -version
启动:scala
二、官网下载安装Spark:spark-2.4.2-bin-hadoop2.7.tgzhttps://www.apache.org/dyn/closer.lua/spark/spark-2.4.2/spark-2.4.2-bin-hadoop2.7.tgz
解压、重命名启动spark
①先启动hadoop 环境start-all.sh
②启动spark环境进入到SPARK_HOME/sbin下运行start-all.sh/opt/module/spark/sbin/start-all.sh[注] 如果使用start-all.sh时候会重复启动hadoop配置,需要./在当前工作目录下执行命令jps 观察进程 多出 worker 和 mater 两个进程。查看spark的web控制页面:http://bigdata128:8080/ 显示spark的端口是7070
③启动Spark Shell此模式用于interactive programming,先进入bin文件夹后运行:spark-shellSecureCRT 下 spark-shell 下scala> 命令行无法删除,解决办法:https://blog.youkuaiyun.com/nicolewjt/article/details/87368749
④退出Spark Shellscala> :quit
三、使用Spark Shell编写代码读取本地文件
在这里插入图片描述
显示第一行内容
在这里插入图片描述
读取HDFS文件
在这里插入图片描述
对上述hdfs根目录下f1.txt文件进行词频统计

在这里插入图片描述
查看结果
在这里插入图片描述
四、用Scala语言编写Spark独立应用程序下载安装Scala

1、执行如下命令新建目录:

cd /usr/local/spark
mkdir mycode
cd mycode
mkdir wordcount
cd wordcount

2、在“/usr/local/spark/mycode/wordcount”目录下新建一个包含了一些语句的文本文件word.txt,命令如下:

vim word.txt

输入需要词频统计语句,退出
3、执行以下命令进入spark-shell

cd /usr/local/spark
./bin/spark-shell
....//这里省略启动过程显示的一大堆信息
scala>

4、加载本地文件
在第二个终端窗口下操作,用下面命令到达“/usr/local/spark/mycode/wordcount”目录,查看一下上面已经建好的word.txt的内容

cd /usr/local/spark/mycode/wordcount
cat word.txt

5、切换回到第一个终端,也就是spark-shell,然后输入下面命令:

scala> val textFile = sc.textFile("file:///usr/local/spark/mycode/wordcount/word.txt")

6、结果:

textFile.first()

加载HDFS中的文件

1、启动Hadoop
2、新建目录:

hdfs dfs -mkdir -p /user/hadoop

3、上传本地的word.txt到HDFS:

hdfs dfs -put /usr/local/spark/mycode/wordcount/word.txt /user/hadoop

4、回到spark-shell窗口,编写语句,把textFile变量中的内容再次写回到另外一个文本文件wordback.txt中:

val textFile = sc.textFile("hdfs://hadoop:9000/user/hadoop/word.txt")

textFile.saveAsTextFile("hdfs://hadoop:9000/user/hadoop/writeback")

5、查看结果

hdfs dfs -cat /user/hadoop/writeback/part-00000

词频统计

切换到spark-shell窗口

scala> val textFile = sc.textFile("file:///usr/local/spark/mycode/wordcount/word.txt")
scala> val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
scala> wordCount.collect()

编写独立应用程序执行词频统计
1、cd /usr/local/spark/mycode/wordcount/ mkdir -p src/main/scala //这里加入-p选项,可以一起创建src目录及其子目录
2、在“/usr/local/spark/mycode/wordcount/src/main/scala”目录下新建一个test.scala文件,里面包含如下代码:
在这里插入图片描述
3、执行如下命令:

cd /usr/local/spark/mycode/wordcount/
vim simple.sbt

4、通过上面代码,新建一个simple.sbt文件,在该文件中输入下面代码:

在这里插入图片描述
5、使用 sbt 打包 Scala 程序

cd /usr/local/spark/mycode/wordcount/
find .

6、通过如下代码将整个应用程序打包成 JAR

cd /usr/local/spark/mycode/wordcount/  //请一定把这目录设置为当前目录
/usr/local/sbt/sbt package

7、在spark中运行jar包

/usr/local/spark/bin/spark-submit --class "WordCount"  /usr/local/spark/mycode/wordcount/target/scala-2.10/wordcount-project_2.10-1.0.jar

五、用Java语言编写Spark独立应用程序
1、在eclipse中运行程序
2、将程序打包传入xshell
3、运行程序
4、词频统计
5、运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值