当前位置: 首页 > 工具软件 > format-udf > 使用案例 >

Spark-sparksql-自定义udf

司马英才
2023-12-01

注册一个判断指定日期的星期数的SQL函数

object UDFUtils {

  def main(args: Array[String]) {
    println(dayOfWeek("2017-05-14"))
  }


  def registerUDF(sqlContext: SQLContext, udfName: String): Unit = {
    udfName match {
      case "dayOfWeek" => sqlContext.udf.register(udfName, dayOfWeek _)
    }

  }


  def dayOfWeek(dateStr: String): Int = {
    val sdf = new SimpleDateFormat("yyyy-MM-dd")
    val date = sdf.parse(dateStr)

    //    val sdf2 = new SimpleDateFormat("EEEE")
    //    sdf2.format(date)

    val cal = Calendar.getInstance();
    cal.setTime(date);
    var w = cal.get(Calendar.DAY_OF_WEEK) - 1;

    //星期天 默认为0
    if (w <= 0)
      w = 7
    w
  }
}
 类似资料: