【大数据】WordCount流程(spark-submit)

一、操作流程
(1)构建maven项目
①选择maven项目,将Project SDK设置为1.8,然后从Create form archetype中选择scala-archetype-empty-RELEASE
在这里插入图片描述

②命名Project,然后将GroupId修改为org.flowpp(可选,此处为与flow公司的操作相一致),其他不需要修改
在这里插入图片描述

③选择maven版本,可直接选择本地下载安装的maven版本(maven3.6.1),其他参数不需要修改,即可创建项目。
在这里插入图片描述

(2)导入工作
scala SDK到Project Structure中的Global Libraries当中
设置project SDK为jdk1.8
在这里插入图片描述
在这里插入图片描述

(3)配置POM.xml文件,设置、、、
除了基础设置之外,其他可以沿用相同的代码架构
4.0.0
org.flowpp
demo
1.0-SNAPSHOT
2008

(4)逻辑代码书写
package com.flowpp.demo
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
object Demo {
def main(args: Array[String]): Unit = {
// val conf = new SparkConf().setAppName(“Demo”).setMaster(“local[*]”)
val conf = new SparkConf().setAppName(“Demo”)
val ss = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()
ss.sparkContext.setLogLevel(“error”)
val input = ss.sparkContext.textFile(“tmp/demo/wordcount.txt”)
val words = input.flatMap(line => line.split(" “))
val counts = words.map(word => (word, 1)).reduceByKey{case (x, y) => x + y}
// counts.saveAsTextFile(”")
// counts.foreach(line => println(line._1 + “:” + line._2))
counts.collect().foreach(line => println(line._1 + “:” + line._2))
ss.close()
}
}

(5)Maven操作:clean(清楚编译后目录,默认是target目录)、package(接受编译好的代码,打包成可发布的格式,如JAR)
在这里插入图片描述

maven打包操作完成过后,若项目生成target文件夹,并含如图所示的子文件夹和文件即可,特别是文件test-1.0-SNAPSHOT.jar,咱们可以打开该文件,查看文件内容

可重点关注MANIFEST.MF中的代码
(6)上传test-1.0-SNAPSHOT.jar至服务器本地
(7)spark-submit运行jar包
(8)利用Ambari网页界面后台观看HDFS和YARN的使用情况(主要),也可以借助Spark-2的History选项来观察历史运行记录

二、学习心得
1、spark-submit:主要是要将该代码的jar包提交到spark后来进行运行,因此本机上的JDK(1.8)、Scala(2.11.12)、Hadoop(2.7.1)需要与集群中的软件包版本保持一致
2、spark-shell:交互式程序运行,可以实时查看到代码的运行结果,与spark-submit不同之处在于spark-submit提交整个代码包,而spark-shell则依次提交结果;相同点在于均能实现相关的功能。

三、问题解决
(1)Mavens 无法打包
①注意版本:JDK(1.8)、Scala(2.11.12)、Hadoop(2.7.1)
②POM.xml文件配置:可参考文件POM模板(针对scala2.11.12).txt
4.0.0
org.flowpp
demo
1.0-SNAPSHOT
仅需要修改以上参数,该类参数在maven项目创建完成之后,即可生成相关参数
(2)spark-submit打包过程出现问题
[work@master ~]$ spark-submit demo-1.0-SNAPSHOT.jar
Error: No main class set in JAR; please specify one with --class
Run with --help for usage help or --verbose for debug output
在spark使用过程中,由于spark的底层代码由java(scala)组成,与java的代码运行机制类似,在运行过程中需要指定主类,否则无法正常执行
解决方法一:Maven指定class打包:配置方法
在POM.xml中的添加以下设置

maven-jar-plugin
3.0.2



com.flowpp.demo.Demo
true
lib/




解决方法二:spark-submit参数设置,如下所示
spark-submit --clsaa com.flowpp.demo.Demo demo-1.0-SNAPSHOT.jar
参数优先级:命令行设置>pom文件设置>maven默认参数
关于com.flowpp.demo.Demo的理解:可理解成路径
(3)test文件夹中的代码运行报错
如test/scala文件的scala运行报错的话,可以直接将这部分代码删掉

四、其他
1、文件权限:LINUX和HDFS遵循的文件权限协议posix,可系统地了解相关操作;
2、用户权限:在利用hdfs操作文件时,若出现文件的相关操作,可通过更改用户来进行相应操作,常利用命令sudo su hdfs进行,操作完成之后,调整回work目录,该问题在Hive创建数据表时出现过;
3、jar相关操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值