记录-bigdata-使用scala语言,使用spark获取ODS层指定分区表中的数据并进行相应的清洗(缺失字段填充、去重)---接上一篇文章

有问题可以私聊我交流​​​​​​​

我这里是完成编码之后,打包发送到集群上运行的!!!

上一篇是从mysql抽取数据到hive的ods层

这一篇是清洗ods层的表到dwd层

1.使用IDEA创建MAVEN项目

pom配置如下


  4.0.0
  com.tledu
  llll
  1.0-SNAPSHOT
  ${project.artifactId}
  My wonderfull scala app
  2018
  
    
      My License
      http://....
      repo
    
  
 
  
    1.8
    1.8
    UTF-8
    2.11.11
    2.11
    4.2.0
  
 
  
    
      org.scala-lang
      scala-library
      ${scala.version}
    
 
 
    
      org.apache.spark
      spark-core_${scala.compat.version}
      2.3.2
      provided
    
 
    
      org.apache.spark
      spark-sql_${scala.compat.version}
      2.3.2
      provided
    
 
    
      org.apache.spark
      spark-hive_2.11
      2.0.2
      provided
    
 
    
      mysql
      mysql-connector-java
      8.0.23
    
 
 
 
    
    
      junit
      junit
      4.12
      test
    
    
      org.scalatest
      scalatest_${scala.compat.version}
      3.0.5
      test
    
    
      org.specs2
      specs2-core_${scala.compat.version}
      ${spec2.version}
      test
    
    
      org.specs2
      specs2-junit_${scala.compat.version}
      ${spec2.version}
      test
    
  
 
  
    src/main/scala
    src/test/scala
    
      
        
        net.alchim31.maven
        scala-maven-plugin
        3.3.2
        
          
            
              compile
              testCompile
            
            
              
                -dependencyfile
                ${project.build.directory}/.scala_dependencies
              
            
          
        
      
      
        org.apache.maven.plugins
        maven-surefire-plugin
        2.21.0
        
          
          true
        
      
      
        org.scalatest
        scalatest-maven-plugin
        2.0.0
        
          ${project.build.directory}/surefire-reports
          .
          TestSuiteReport.txt
          
          samples.AppTest
        
        
          
            test
            
              test
            
          
        
      
 
      
        maven-assembly-plugin
        
          
            jar-with-dependencies
          
        
        
          
            make-assembly
            package
            
              assembly
            
          
        
      
    
  

编程过程

 // 清洗数据  创建sparksession
    val spark = SparkSession
      .builder()
      .appName("数据清洗服务")
      .enableHiveSupport()
      .getOrCreate()

//使用hive的ods库
    spark.sql("use ods")

//这里使用的是数据去重操作
    val df = spark.table("orders").select("orderkey", "custkey", "orderstatus",                         
         "totalprice", "orderdate", "orderpriority", "clerk", "shippriority",
         "comment", "etldate")

// df2就是去重之后的数据
    val df2 = df.distinct()

//给df2创建视图
    df2.createOrReplaceTempView("data_temp")

//这里还把有关时间的字段   换成了timestamp类型
    spark.sql("select to_unix_timestamp(orderdate,'yyyy-MM-dd'),to_unix_timestamp(etldate,'yyyy-MM-dd') from data_temp")

//再使用dwd库  把从ods清洗的数据放进去
spark.sql("use dwd")
    spark.sql(
      """
        |insert overwrite table dwdorders
        |select * from data_temp
        |""".stripMargin)
    spark.close()

关于有关jar包的引入,看我的另一篇文章

使用Scala语言,使用Spark抽取MySQL指定数据表中的数据到HIVE的ODS层的表中_wuzxu的博客-CSDN博客

2.集群运行

rz-bye  上传jar包

启动运行jar包

我用的是脚本

#! /bin/bash
export HADOOP_CONF_DIR=/usr/hdp/3.1.0.0-78/hadoop/conf
/usr/hdp/3.1.0.0-78/spark2/bin/spark-submit \
--class 这里是你要运行的类 \
--master local[2] \
--driver-memory 512m \
--executor-memory 512m \
--num-executors 2 \
/这里是你jar包的地址    最前面有这个/哦
#export 的是你的spark-submi的地址哦

你可能感兴趣的:(liunx,spark,scala)