Jelajahi Sumber

fix: 清空所有partition

许家凯 3 tahun lalu
induk
melakukan
9c04f854bf

+ 29 - 4
src/main/scala/com/winhc/bigdata/spark/utils/LoggingUtils.scala

@@ -117,8 +117,33 @@ trait LoggingUtils extends Logging {
 
 
   def dropAllPartitions(tableName: String): Unit = {
-    for (elem <- getPartitions(tableName)) {
-      sql(s"ALTER TABLE $tableName DROP IF EXISTS PARTITION(ds='$elem')")
+    val array = sql(s"show partitions $tableName").collect().map(_.getString(0))
+    val tns = array.map(r => {
+      r.split("/").map(t => {
+        val record = t.split("=")
+        s"${record(0)}='${record(1)}'"
+      }).mkString(",")
+    })
+    logInfo(
+      s"""
+         |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+         |Job[${this.getClass.getSimpleName}].SQL[No$sqlNo.]
+         |
+         |dropAllPartitions $tableName
+         |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+       """.stripMargin
+    )
+    println(
+      s"""
+         |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+         |Job[${this.getClass.getSimpleName}].SQL[No$sqlNo.]
+         |
+         |dropAllPartitions $tableName
+         |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+         |""".stripMargin)
+
+    for (elem <- tns) {
+      spark.sql(s"ALTER TABLE $tableName DROP IF EXISTS PARTITION($elem)")
     }
   }
 
@@ -191,7 +216,7 @@ trait LoggingUtils extends Logging {
   }
 
 
-  def generateAllTabSql(tableName: String, project: String): (String, Seq[String],String) = {
+  def generateAllTabSql(tableName: String, project: String): (String, Seq[String], String) = {
     val inc_ads_tab = s"$project.inc_ads_$tableName"
     val ads_tab = s"$project.ads_$tableName"
     val cols = getColumns(inc_ads_tab).intersect(getColumns(ads_tab))
@@ -219,6 +244,6 @@ trait LoggingUtils extends Logging {
          |                    ) AS all_t1
          |        ) AS all_t2
          |WHERE   all_t2.xjk_num = 1
-         |""".stripMargin, cols,p_b)
+         |""".stripMargin, cols, p_b)
   }
 }