当前位置 博文首页 > qq262593421的博客:IDEA 编写 第一个spark项目

    qq262593421的博客:IDEA 编写 第一个spark项目

    作者:[db:作者] 时间:2021-08-30 12:49

    scala 2.11.12 下载:https://www.scala-lang.org/download/

    scala 2.11.12(Linux):scala-2.11.12.tgz

    scala 2.11.12(windows):scala-2.11.12.zip

    IDEA 新建一个 Maven项目

    Maven项目创建成功提示

    [INFO] BUILD SUCCESS

    pom.xml 参考:

    https://blog.csdn.net/qq262593421/article/details/105769886

    创建Object对象

    package com.xtd.spark
    
    import org.apache.spark.sql.SQLContext
    import org.apache.spark.{SparkConf, SparkContext}
    
    class Example {
    
      def sparkSQL(path:String): Unit = {
    
        // D:/Hadoop/Spark/spark-2.4.0-bin-without-hadoop/examples/src/main/resources/employees.json
        val sparkConf = new SparkConf()
        sparkConf.setAppName("SparkExample").setMaster("local[2]")
        val context = new SparkContext(sparkConf)
        val sqlContext = new SQLContext(context)
        val people = sqlContext.read.format("json").load(path)
        people.printSchema()
        people.show()
        context.stop()
      }
    
    }
    
    object Example{
      def main(args: Array[String]): Unit = {
        val path = args(0)
        val example = new Example
        example.sparkSQL(path)
        println("path: "+path)
      }
    }
    

    点击右上角的对象名称,编辑项目配置,添加传递参数(本地文件添加前缀file:///)

    file:///D:/Hadoop/Spark/spark-2.4.0-bin-without-hadoop/examples/src/main/resources/employees.json

    ?employees.json 文件 ,这个文件在spark安装文件根目录下的examples下可找到

    {"name":"Michael"}
    {"name":"Andy", "age":30}
    {"name":"Justin", "age":19}
    

    运行会出现以下成功提示

    如何打包到集群?

    右击项目,选择 Open in Terminal,进入CMD控制台

    输入Maven编译命令

    mvn clean package -DskipTest

    接下来把 jar 包上传至 Linux 服务器上,通过?spark-submit 提交 jar 到集群?

    客户端模式

      spark-submit \
      --class com.xtd.spark.Example \
      --deploy-mode client \
      /home/spark/jar/spark2-1.0.jar \
      file:///home/spark/examples/employees.json

    ?spark?on?yarn?

      spark-submit \
      --class com.xtd.spark.ExampleHDFS \
      --master yarn \
      --deploy-mode cluster \
      --driver-memory 2g \
      --executor-cores 1 \
      --executor-memory 1g \
      /home/spark/jar/spark-1.0.jar \
      /user/spark/examples/resources/employees.json

    注意事项

    /home/spark/jar/spark-1.0.jar?是jar包在Linux上的路径,jar包上传在哪就写哪

    file:///home/spark/examples/employees.json 这行是传递的参数,file://表示employees.json文件在Linux上

    更多参数设置可以输入命令?spark-submit --help

    运行结果

    如果Maven项目已经创建,可右键点击项目添加Scala框架的支持,然后选择Scala,在源码目录便可创建Scala代码

    如果Scala SDK没有配置需要先配置 Scala SDK

    如果需要项目需要分模块,可直接删除父目录的src文件,然后再创建子模块(创建方式和创建普通Maven项目一样)

    在 Maven build plugins 标签中使用?maven-assembly-plugin 可将程序包和依赖jar包一起打出来

          <!-- maven-assembly-plugin 打依赖包 -->
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
              <archive>
                <manifest>
                  <mainClass>com.marinfo.demo.RunTaskVersion2</mainClass>
                </manifest>
              </archive>
            </configuration>
            <executions>
              <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
          </plugin>

    ?

    cs