利用scala清洗hive数据

tanqi
8
2025-04-08
// 清洗数据  创建sparksession
    val spark = SparkSession
      .builder()
      .appName("数据清洗服务")
      .master("local[*]")
      .config("hive.metastore.dir", "thrift://node3:9083")
      .enableHiveSupport()
      .getOrCreate()
 
    //这里使用的是数据去重的表列
    val hive: DataFrame = spark.table("ods.qc1").select("name", "age", "gender",
      "phone", "data_d")
 
    // 这是去重之后的数据
    var qc_hive= hive.distinct()
 
    //qc_hive.na.drop().show()   //这是删除null值的列
    //qc_hive.na.fill("table1").show()   //这里是填充为table1
 
    val t_tmil=LocalDate.nAow().plusDays(-1).toString().replace("-","")   //填充昨天的时间
 
    //给去重后的表创建视图
    qc_hive.createOrReplaceTempView("qc_data")
    var dwd_hive = qc_hive.withColumn("dt", date_format(col("data_d"), "yyyyMMdd")).na.fill(t_tmil)
    dwd_hive.show()
 
    dwd_hiveQ
      .write
      .partitionBy("dt")
      .mode(SaveMode.Overwrite)
      .saveAsTable("dwd.qc1")
    spark.close()

动物装饰