BaseUtil.scala 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package com.winhc.bigdata.spark.utils
  2. import java.text.SimpleDateFormat
  3. import java.util.regex.{Pattern}
  4. import java.util.{Calendar, Date, Locale}
  5. import org.apache.commons.lang3.StringUtils
  6. import org.apache.commons.lang3.time.DateFormatUtils
  7. import org.apache.spark.sql.SparkSession
  8. /**
  9. * @Author: XuJiakai
  10. * @Date: 2020/6/3 18:49
  11. * @Description:
  12. */
  13. object BaseUtil {
  14. //去其他符号 去空格
  15. private val pattern = "[^\\u4e00-\\u9fa50-9a-zA-Z]".r
  16. //去其他符号 去空格 补全null
  17. def cleanup(s: String): String = {
  18. if (StringUtils.isBlank(s))
  19. ""
  20. else
  21. pattern replaceAllIn(s, "")
  22. }
  23. def isWindows: Boolean = System.getProperty("os.name").contains("Windows")
  24. def getPartitions(t: String, @transient spark: SparkSession): Seq[String] = {
  25. import spark._
  26. val sql_s = s"show partitions " + t
  27. sql(sql_s).collect.toList.map(_.getString(0).split("=")(1)).seq
  28. }
  29. def getPartion(t: String, @transient spark: SparkSession) = {
  30. val ps = getPartitions(t, spark)
  31. if (ps.size > 0) {
  32. ps.last
  33. } else {
  34. ""
  35. }
  36. }
  37. def getFirstPartion(t: String, @transient spark: SparkSession) = {
  38. val ps = getPartitions(t, spark)
  39. if (ps.size > 0) {
  40. ps.head
  41. } else {
  42. ""
  43. }
  44. }
  45. def nowDate(pattern: String = "yyyy-MM-dd"): String = {
  46. new SimpleDateFormat(pattern).format(new Date)
  47. }
  48. def atMonthsBefore(n: Int, pattern: String = "yyyy-MM-dd"): String = {
  49. val c = Calendar.getInstance(Locale.CHINA)
  50. c.setTimeInMillis(new Date().getTime)
  51. c.add(Calendar.MONTH, -1 * n)
  52. DateFormatUtils.format(c.getTime.getTime, pattern)
  53. }
  54. def getYesterday(): String = {
  55. atDaysAfter(-1, nowDate("yyyyMMdd"))
  56. }
  57. def getYear(n:Int): String ={
  58. val cal = Calendar.getInstance(Locale.CHINA)
  59. cal.add(Calendar.YEAR,1*n)
  60. cal.get(Calendar.YEAR).toString
  61. }
  62. def atDaysAfter(n: Int, time: String, pattern: String = "yyyyMMdd"): String = {
  63. import java.text.SimpleDateFormat
  64. val newtime: Date = new SimpleDateFormat("yyyyMMdd").parse(time)
  65. val c = Calendar.getInstance(Locale.CHINA)
  66. c.setTimeInMillis(newtime.getTime)
  67. c.add(Calendar.DATE, 1 * n)
  68. DateFormatUtils.format(c.getTime.getTime, pattern)
  69. }
  70. private val case_no = Pattern.compile(".*([(\\(]\\d{4}[)\\)].*?号).*")
  71. def caseNo(s: String): String = {
  72. if (StringUtils.isBlank(s)) return ""
  73. val s1 = s.replaceAll("(\\r\\n|\\r|\\n|\\n\\r|\\s+)", "")
  74. val matcher = case_no.matcher(s1)
  75. if (matcher.find) {
  76. return matcher.replaceAll("$1").replaceAll("\\(", "(").replaceAll("\\)", ")")
  77. }
  78. ""
  79. }
  80. private val replace_char = "[^\\u4e00-\\u9fa5a-zA-Z\\(\\)()]+".r
  81. def replaceChar(s: String) = {
  82. if (StringUtils.isNotBlank(s)) {
  83. val arr =
  84. s.replaceAll("、", ",")
  85. .replaceAll(";", ",")
  86. .replaceAll(",", ",")
  87. .replaceAll(" ", ",")
  88. .replaceAll("。", ",")
  89. .replaceAll(";", ",")
  90. .replaceAll(":", ",")
  91. .replaceAll("\\s+", ",").split(",")
  92. val list = arr.filter(_.length > 1).toList
  93. if (list.nonEmpty) {
  94. val sb = new StringBuilder
  95. for (a <- list) {
  96. sb.append(a).append(",")
  97. }
  98. sb.substring(0, sb.lastIndexOf(",")) toString()
  99. } else {
  100. ""
  101. }
  102. } else {
  103. ""
  104. }
  105. }
  106. def BKDRHash(str: String): Long = {
  107. val seed: Long = 1313131313 // 31 131 1313 13131 131313 etc..
  108. var hash: Long = 0
  109. for (i <- 0 to str.length - 1) {
  110. hash = hash * seed + str.charAt(i)
  111. hash = hash & 0x7FFFFFFFFFFFFFFFL
  112. }
  113. return hash
  114. }
  115. def nameJudge(name: String, yg_name: String, bg_name: String): String = {
  116. if(StringUtils.isNotBlank(name)){
  117. if(StringUtils.isNotBlank(yg_name)&&yg_name.contains(name)){
  118. return "y"
  119. }else if(StringUtils.isNotBlank(bg_name)&&bg_name.contains(name)){
  120. return "b"
  121. }
  122. }
  123. ""
  124. }
  125. def main(args: Array[String]): Unit = {
  126. println(getYear(-1))
  127. }
  128. }