美文网首页
Spark 中自定义udf 配合 withColumn 实现新增

Spark 中自定义udf 配合 withColumn 实现新增

作者: chenxk | 来源:发表于2019-04-23 16:47 被阅读0次

1.定义UDF

val get_online  = (pc_login_time:String,app_login_time:String) => {

    def get_minutes(login_time:String):Int = {
      val formatTime = login_time.substring(0,19)
      val dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
      val date = dateFormat.parse(formatTime)
      val diff = System.currentTimeMillis() - date.getTime
      (diff / 1000 / 60).intValue()
    }


    var res = 0
    try{
      if (pc_login_time != null && pc_login_time.length>15){
        if (get_minutes(pc_login_time) < 15){
          res = 2
        }
      }
      if (app_login_time != null && app_login_time.length>15){
        if (get_minutes(app_login_time) < 3*24*60){
          res = 2
        }
      }
    }
    res
  }

2.调用Udf

    val udf_online = udf(get_online)
    val god_online_1 = user_df.filter(col("if_god")===1)
      .withColumn("online_score", udf_online(col("pc_login_time"),col("app_login_time")))

相关文章

网友评论

      本文标题:Spark 中自定义udf 配合 withColumn 实现新增

      本文链接:https://www.haomeiwen.com/subject/arqbgqtx.html