|
@@ -0,0 +1,35 @@
|
|
|
+package com.winhc.bigdata.spark.udf
|
|
|
+
|
|
|
+import org.apache.spark.broadcast.Broadcast
|
|
|
+import org.apache.spark.sql.SparkSession
|
|
|
+
|
|
|
+import scala.annotation.meta.getter
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Author: XuJiakai
|
|
|
+ * @Date: 2020/9/30 13:57
|
|
|
+ * @Description:
|
|
|
+ */
|
|
|
+trait CourtRank {
|
|
|
+ @(transient@getter) protected val spark: SparkSession
|
|
|
+
|
|
|
+ def courtRank(): Broadcast[Map[String, String]] = {
|
|
|
+ val court_name_rank: Map[String, String] = spark.sql(
|
|
|
+ s"""
|
|
|
+ |select * from winhc_eci_dev.court_rank
|
|
|
+ |""".stripMargin)
|
|
|
+ .collect()
|
|
|
+ .map(r => (r.getAs[String]("name"), r.getAs[String]("court_rank")))
|
|
|
+ .flatMap(t => {
|
|
|
+ val name = t._1
|
|
|
+ val rank = t._2
|
|
|
+ if (name.contains("又名")) {
|
|
|
+ val ns = name.replaceAll("[\\(\\)()]", "").split("又名")
|
|
|
+ ns.map(f => (f, rank))
|
|
|
+ } else {
|
|
|
+ Seq((name, rank))
|
|
|
+ }
|
|
|
+ }).toMap ++ Map("中华人民共和国最高人民法院" -> "最高法院", "最高人民法院" -> "最高法院")
|
|
|
+ spark.sparkContext.broadcast(court_name_rank)
|
|
|
+ }
|
|
|
+}
|