|
@@ -3,6 +3,7 @@ package com.winhc.bigdata.spark.jobs.dynamic
|
|
|
import java.util.Date
|
|
|
|
|
|
import com.winhc.bigdata.spark.config.EsConfig
|
|
|
+import com.winhc.bigdata.spark.utils.BaseUtil.isWindows
|
|
|
import com.winhc.bigdata.spark.utils.ReflectUtils.getClazz
|
|
|
import com.winhc.bigdata.spark.utils.{LoggingUtils, SparkUtils}
|
|
|
import org.apache.commons.lang3.time.DateFormatUtils
|
|
@@ -29,7 +30,6 @@ object CompanyDynamic {
|
|
|
@(transient@getter) val spark: SparkSession = s
|
|
|
|
|
|
private val env = "dev"
|
|
|
- var cleanFlag = false
|
|
|
val targetTab = "xjk_tmp_company_dynamic"
|
|
|
|
|
|
def init(): Unit = {
|
|
@@ -38,6 +38,7 @@ object CompanyDynamic {
|
|
|
|CREATE TABLE IF NOT EXISTS ${getEnvProjectName(env, project)}.$targetTab
|
|
|
|(
|
|
|
| cid STRING COMMENT '公司id'
|
|
|
+ | ,cname STRING COMMENT '公司name'
|
|
|
| ,info_type STRING COMMENT '变更分类,大类'
|
|
|
| ,rta_desc STRING COMMENT '变更信息描述,变更标题'
|
|
|
| ,change_content STRING COMMENT '变更内容'
|
|
@@ -49,7 +50,7 @@ object CompanyDynamic {
|
|
|
| ,create_time STRING COMMENT '创建时间'
|
|
|
|)
|
|
|
|COMMENT '企业动态输出表'
|
|
|
- |PARTITIONED BY (ds STRING COMMENT '分区')
|
|
|
+ |PARTITIONED BY (ds STRING COMMENT '分区',tn STRING COMMENT '表名')
|
|
|
|LIFECYCLE 30
|
|
|
|""".stripMargin)
|
|
|
}
|
|
@@ -67,19 +68,20 @@ object CompanyDynamic {
|
|
|
|AND tn = '$tableName'
|
|
|
|AND TYPE in (${types.map("'" + _ + "'").mkString(",")})
|
|
|
|""".stripMargin)
|
|
|
- .rdd.map(r => {
|
|
|
+ .rdd.flatMap(r => {
|
|
|
val rowkey = r.getAs[String]("rowkey")
|
|
|
val cid = r.getAs[String]("cid")
|
|
|
val new_data = r.getAs[Map[String, String]]("data")
|
|
|
val old_data = r.getAs[Map[String, String]]("old_data")
|
|
|
val biz_date = r.getAs[String]("biz_date")
|
|
|
val fields = r.getAs[String]("fields")
|
|
|
- val res = handle.handle(rowkey, biz_date, cid, if (fields == null) null else fields.split(","), old_data, new_data)
|
|
|
- Row(cid, res._1, res._2, res._3, res._4, res._5, res._6, res._7, res._8, DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"))
|
|
|
+ val result = handle.handle(rowkey, biz_date, cid, if (fields == null) null else fields.split(","), old_data, new_data)
|
|
|
+ result.map(res => Row(cid, null, res._1, res._2, res._3, res._4, res._5, res._6, res._7, res._8, DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")))
|
|
|
})
|
|
|
|
|
|
val schema = getSchema(ListMap(
|
|
|
"cid" -> StringType
|
|
|
+ , "cname" -> StringType
|
|
|
, "info_type" -> StringType
|
|
|
, "rta_desc" -> StringType
|
|
|
, "change_content" -> StringType
|
|
@@ -93,19 +95,11 @@ object CompanyDynamic {
|
|
|
spark.createDataFrame(rdd, schema)
|
|
|
.createOrReplaceTempView("company_dynamic_tmp")
|
|
|
|
|
|
- if (!cleanFlag) {
|
|
|
- sql(
|
|
|
- s"""
|
|
|
- |alter table ${getEnvProjectName(env, project)}.$targetTab drop if exists partition(ds='$ds')
|
|
|
- |""".stripMargin)
|
|
|
- cleanFlag = true
|
|
|
- }
|
|
|
-
|
|
|
- val cols = getColumns(s"$project.$targetTab").filter(!_.equals("ds"))
|
|
|
+ val cols = getColumns(s"$project.$targetTab").filter(!_.equals("ds")).filter(!_.equals("tn"))
|
|
|
|
|
|
sql(
|
|
|
s"""
|
|
|
- |INSERT INTO TABLE ${getEnvProjectName(env, project)}.$targetTab PARTITION(ds='$ds')
|
|
|
+ |INSERT ${if (isWindows) "INTO" else "OVERWRITE"} TABLE ${getEnvProjectName(env, project)}.$targetTab PARTITION(ds='$ds',tn='$tableName')
|
|
|
|SELECT ${cols.mkString(",")}
|
|
|
|FROM
|
|
|
| company_dynamic_tmp
|