Maven工程实现Spark api—wordcount和打印hdfs文件
1、使用idea新建maven工程
GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
GroupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的GroupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,ArtifactId是tomcat。
比如我创建一个项目,我一般会将GroupId设置为cn.bright,cn表示域为中国,bright是我英文名,ArtifactId设置为testProj,表示你这个项目的名称是testProj,依照这个设置,在你创建Maven工程后,新建包的时候,包结构最好是cn.zr.testProj打头的,如果有个StudentDao[Dao层的],它的全路径就是cn.zr.testProj.dao.StudentDao
Maven在windows上配置环境变量
JAVA_HOME
C:\Program Files\Java\jdk1.8.0_241
CLASSPATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
MAVEN_HOME
D:\soft\maven3.6.1\apache-maven-3.6.1
HADOOP_HOME
D:\soft\hadoop-2.6.0-cdh5.14.2\hadoop-2.6.0-cdh5.14.2
修改settings.xml
settings file 需要修改,我这个改成了阿里云的仓库
maven下载链接: https://pan.baidu.com/s/1rZqDw6BbAveATY9epURG6Q
提取码: rakh
打开后修改
能使用阿里云仓库是因为这段代码:
根据自己来修改maven项目保存的路径:
这里选择你的maven文件夹位置,并且如图找到settings.xml:
点击Finnish,之后选择new window
这时候开始下载依赖,点第一个手动确认下载,第二个是自动下载,我选择自动
改成 1.8
改成 4.12
2、添加依赖包
可以上官网找依赖包
回答问题进入 网站 ,搜索栏输入spark
根据spark版本选择 我spark是2.4.5 点击2.11
复制即可
复制到···········中间
如图能看到进度条 开始下载了
搜索scala library选择 2.11.8版本的
搜索log4j选择 1.2.17版本的
搜索 slf4j 选择 1.7.21版本的
搜索 spark sql 选择 2.1.1版本的
为方便读者,直接提供
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
</dependencies>
3、创建 scala 文件
3.1新建文件夹名为 scala
scala 文件夹图标变蓝了
这时可以新建Scala文件了
4、开始写wordcount功能以及打印hdfs上内容的程序
import org.apache.spark.{Partition, SparkConf, SparkContext}
object wordcount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setMaster("local[2]").setAppName("wordcount") //[]中是可改核心数
val sc = SparkContext.getOrCreate(conf)
val rdd1 = sc.parallelize(List("hello world","hello java","hello scala"),5)
sc.makeRDD(List("hello world","heh j","hefk kfef"),5)
rdd1.flatMap(x=>x.split(" ")).map((_,1)).reduceByKey(_+_).collect.foreach(println)
val partitions:Array[Partition]=rdd1.partitions //可以看出分区数
println("rdd分区数:"+partitions.length)
println("-------------------------------------")
//相对路径
val lines = sc.textFile("in/word.txt")
lines.collect.foreach(println)
//打印出hdfs 上的内容
val lineshdfs = sc.textFile("hdfs://hadoop001:9000/kb09workspace/")
println("-------------hdfs-------------------")
lineshdfs.collect.foreach(println)
}
}
5、不显示运行日志打印
运行发现有日志,不便于学习查看
新建resource文件夹
向下翻找到 并且复制 粘贴到resource文件夹
文件重命名为
如图所示改成ERROR
再次运行,没有日志显示了