Spark 使用IDEA测试集群环境

Spark 使用IDEA测试集群环境

spark-shell仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在IDEA中编写程序,然后打成jar包,最后提交到集群。最常用的是创建一个Maven项目,利用Maven来管理jar包的依赖。

1. 创建maven工程

2. 配置pom.xml文件

<properties>
        <scala.version>2.11.8scala.version>
        <hadoop.version>2.7.4hadoop.version>
        <spark.version>2.0.2spark.version>
    properties>
    <dependencies>
        <dependency>
            <groupId>org.scala-langgroupId>
            <artifactId>scala-libraryartifactId>
            <version>${scala.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.sparkgroupId>
            <artifactId>spark-core_2.11artifactId>
            <version>${spark.version}version>
        dependency>
        <dependency>
            <groupId>org.apache.hadoopgroupId>
            <artifactId>hadoop-clientartifactId>
            <version>${hadoop.version}version>
        dependency>
    dependencies>
    <build>
        <sourceDirectory>src/main/scalasourceDirectory>
        <testSourceDirectory>src/test/scalatestSourceDirectory>
        <plugins>
            <plugin>
                <groupId>net.alchim31.mavengroupId>
                <artifactId>scala-maven-pluginartifactId>
                <version>3.2.0version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compilegoal>
                            <goal>testCompilegoal>
                        goals>
                        <configuration>
                            <args>
                                <arg>-dependencyfilearg>
                                <arg>${project.build.directory}/.scala_dependenciesarg>
                            args>
                        configuration>
                    execution>
                executions>
            plugin>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-shade-pluginartifactId>
                <version>2.3version>
                <executions>
                    <execution>
                        <phase>packagephase>
                        <goals>
                            <goal>shadegoal>
                        goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SFexclude>
                                        <exclude>META-INF/*.DSAexclude>
                                        <exclude>META-INF/*.RSAexclude>
                                    excludes>
                                filter>
                            filters>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>mainClass>
                                transformer>
                            transformers>
                        configuration>
                    execution>
                executions>
            plugin>
        plugins>
build>

3. 添加资源文件夹

添加src/main/scala和src/test/scala,与pom.xml中的配置保持一致

Spark 使用IDEA测试集群环境_第1张图片

4. 创建scala类

新建一个scala class,类型为Object

5. 编写程序

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


object WordCount {
  def main(args: Array[String]): Unit = {
    //设置spark的配置文件信息
    val sparkConf: SparkConf = new SparkConf().setAppName("WordCount")
    //本地模式,直接本地两个线程测试运行
    //val sparkConf = new SparkConf().setAppName("AppWordCount").setMaster("local[2]")
    //构建sparkcontext上下文对象,它是程序的入口,所有计算的源头
    val sc: SparkContext = new SparkContext(sparkConf)
    //读取文件
    val file: RDD[String] = sc.textFile(args(0))

    //对文件中每一行单词进行压平切分
    val words: RDD[String] = file.flatMap(_.split(" "))
    //对每一个单词计数为1 转化为(单词,1)
    val wordAndOne: RDD[(String, Int)] = words.map(x=>(x,1))
    //相同的单词进行汇总 前一个下划线表示累加数据,后一个下划线表示新数据
    val result: RDD[(String, Int)] = wordAndOne.reduceByKey(_+_)
    //保存数据到HDFS
    result.saveAsTextFile(args(1))
    sc.stop()
  }
}

6. 打包并上传

打包并且上传到集群节点上。

7. 提交应用

使用spark-submit命令提交Spark应用(注意参数的顺序)
spark-submit提交任务到集群上。用的是spark的Standalone模式

spark-submit \
--class cn.test.spark.WordCount \
--master spark://node-1:7077 \
--executor-memory 1g \
--total-executor-cores 2 \
/root/spark-1.0-SNAPSHOT.jar \
/words.txt \
/spark_out

8. 查看hdfs上的结果文件

hdfs dfs -cat /spark_out/part*

Spark 使用IDEA测试集群环境_第2张图片

喜欢就点赞评论+关注吧

Spark 使用IDEA测试集群环境_第3张图片

感谢阅读,希望能帮助到大家,谢谢大家的支持!

你可能感兴趣的:(spark)