03-sparkWC开发与应用部署

版权声明:本文为IT晓白博主原创文章,转载请附上博文链接! https://blog.csdn.net/qq_38617531/article/details/86759448

1. 使用Idea新建项目:

Scala+maven工程

1.1. 新建project

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2. 新建module

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3. 添加scala

在这里插入图片描述
在这里插入图片描述

1.4. 添加maven

还是在上面那个窗口找到maven选中,点击OK
在这里插入图片描述

配置maven并修改maven创库

1.File–点击Settings
在这里插入图片描述
2.说明如图中所示
在这里插入图片描述
Scala+maven项目目录结构如下
在这里插入图片描述

2. WordCount开发练习

2.1. 在pom文件中添加相关jar包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>groupId</groupId>
<artifactId>spark_01</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
    <!--spark依赖-->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.3.0</version>
    </dependency>
    <!--scala依赖-->
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.11.7</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <!--用于将scala类加载到classes中-->
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>testCompile</goal>
                    </goals>
                </execution>
            </executions>
            <!--用于指定main的位置-->
            <configuration>
                <sourceDir>src/main/java</sourceDir>
                <jvmArgs>
                    <jvmArg>-Xms64m</jvmArg>
                    <jvmArg>-Xmx1024m</jvmArg>
                </jvmArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

</project>

2.2. WordCount程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码信息如下

import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]): Unit = {
    //1.新建spark的配置对象
    val conf = new SparkConf()
    //程序名
    conf.setAppName("WordCount")
    //设置spark运行在哪里
    /*
        本地运行是local
            local[N]  分配N个工作线程
            [n,m] 分配n个线程 ,提交失败之后可以有M次机会去重新提交
            local[*]  自动分配资源  一般是2个

      集群模式:  standalone
          也就是集群中的master地址   spark://xxx:7077

        其他模式

 */
conf.setMaster("local")

// new SparkConf().setAppName("").setMaster("");

//2.创建spackContext对象
val sc = new SparkContext(conf)

//3.获取数据源   本地    hdfs  hBase  ...
/*
  linux    /
  hadoop   hdfs://xxx:9000/xxx
 */
val lines = sc.textFile("D://wc.log") //RDD
println(lines) //D://wc.log MapPartitionsRDD[1] at textFile at WordCount.scala:36
//4.处理数据   (数据类型,数据类型)=> 函数体
lines.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).collect().foreach(println(_))

//5.释放资源
sc.stop()
  }
}

wc.log文件内容如下

hello world
for you
tom sum
hello henan
henan zhengzhou
shanghai hongqiao
beijing tiananmen
zhongguo henan

2.3. 打包运行到linux上

上传集群之前,要在本地测通过。注意配置hadoop环境变量。运行结果如下
在这里插入图片描述
上面的代码是本地测试,上传集群上需要修改第22行与第34行代码。
在这里插入图片描述
打包方式:使用maven package
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在本地找到jar包的位置
在这里插入图片描述
在这里插入图片描述
注意:上图中jar包的大小

2.4. 把jar包上传到linux上

我是用连接Linux的可视化工具不是常见的shell,而是的MobaXterm。有需要的可以点击这里。使用这款软件用起来很方便,文件可以直接拖动上传到集群上。
在这里插入图片描述
在这里插入图片描述
在集群上ls查看,jar包上传完毕
在这里插入图片描述

3. 提交任务

在这里插入图片描述

spark-submit 
--master    运行在哪里
Local  运行在本地
Spark://master2:7077
...
--name      app的名字
--class		运行的主类
--jars		依赖的jar包

3.1. 运行在本地

3.1.1. 运行一个hdfs文件
向hdfs上面上传一个文件(还是原来的文件内容) hadoop fs -put /wc.log /

本地运行命令如下

spark-submit  --master  local  --class WordCount   /spark_01-1.0-SNAPSHOT.jar  hdfs://master2:9000/wc.log

注意点
1.--class后面跟的是运行主类,如果创建类的时候有包名要带上,全路径。2.hdfs://master2:9000/wc.log 读取的这个文件是hdfs上的文件,也要写配置的hdfs的全路径。
在这里插入图片描述
运行结果
在这里插入图片描述

3.2. 运行在集群上面

批注:我的是单机伪分布集群

spark-submit  --master  spark://master2:7077  --class WordCount   /spark_01-1.0-SNAPSHOT.jar  hdfs://master2:9000/wc.log 

注意:--master后面跟的是运行的位置,写你配置spark集群的集群IP:7077
在这里插入图片描述

途中问题

问题1:
问题描述:spark在wind上本地运行,出现Error:scalac: No 'scala-library*.jar' in Scala compiler classpath in Scala SDK SBT: org.scala-lang:scala-library:2.11.7:jar
在这里插入图片描述
问题原因:idea找不到scala的编译环境
解决方法File>>Project Structure>>Libraries中删除默认的scala编译library,替换成本地的变量即可

图解说明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
问题2:
问题描述:上传到hdfs文件的时候,集群处于安全模式
在这里插入图片描述
解决方案:可以点击这里
在这里插入图片描述

相关资源

spark学习总结

猜你喜欢

转载自blog.csdn.net/qq_38617531/article/details/86759448