• sparksql实践_2


    package spark
    
    import java.text.SimpleDateFormat
    import java.util.{Calendar, Date}
    
    import org.apache.spark.SparkConf
    import org.apache.spark.sql._
    
    
    object Execute {
      def main(args: Array[String]): Unit = {
        val sparkConf = new SparkConf().setAppName("Execute")
        val session = SparkSession.builder().config(sparkConf).enableHiveSupport().getOrCreate()
        val time = args(0) //传入参数  2019052212
        val dateFormatTime = new SimpleDateFormat("yyyyMMddHH")
        val dateFormatDay = new SimpleDateFormat("yyyyMMdd")
        val dateFormatHour = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
        val cal = Calendar.getInstance()
        cal.setTime(dateFormatTime.parse(time))
        val partitionDate = dateFormatDay.format(cal.getTime)
        val partitionHour = cal.get(Calendar.HOUR_OF_DAY).toString.length() match {
          case 1 => "0" + cal.get(Calendar.HOUR_OF_DAY).toString
          case _ => cal.get(Calendar.HOUR_OF_DAY).toString
        }
        val statisDatePre = dateFormatHour.format(dateFormatTime.parse(time))
        cal.setTime(new Date(dateFormatTime.parse(time).getTime + 3600000))
        val statisDateNow = dateFormatHour.format(cal.getTime)
        val handle: Array[Row] = session.sql("select handle_condition FROM sospdm.mysql_to_hive_m_guest_screen_info WHERE create_time >= '" + statisDatePre + "' and create_time <= '" + statisDateNow + "' and source = 'SH_10001'").rdd.collect()
    
        for (row <- handle) {
          val ex_sql = row.getString(0)
          val idCust = session.sql(ex_sql)
          idCust.registerTempTable("tmp_m_guest_screen_info")
          //结果数据插入结果表
          session.sql("insert overwrite table sospdm.tdm_wit_customer_group_detail partition (statis_date= " + partitionDate + " ,statis_hour= " + partitionHour + " ) select cust_group_cd as cid,cust_num from tmp_m_guest_screen_info")
          session.sql("insert overwrite table sospdm.tdm_wit_customer_group_code partition (statis_date= " + partitionDate + " ,statis_hour= " + partitionHour + " ) select cust_group_cd as cid from tmp_m_guest_screen_info group by cust_group_cd")
        }
      }
    }
  • 相关阅读:
    回顾2018,展望2019
    NLog日志框架使用探究-1
    基于NetMQ的TLS框架NetMQ.Security的实现分析
    鸟哥的Linux私房菜笔记第五章,文件权限与目录配置(二)
    鸟哥的Linux私房菜笔记第五章,文件权限与目录配置(一)
    鸟哥的Linux私房菜笔记第四章
    ThinkPHP5.1 + tufanbarisyildirim 解析apk
    Java核心技术第八章——泛型程序设计(1)
    Java核心技术第五章——2.Object类
    Java核心技术第五章——1.类、超类、子类(2)
  • 原文地址:https://www.cnblogs.com/yin-fei/p/10910709.html
Copyright © 2020-2023  润新知