spark sql自定义函数udf

本文介绍如何在Spark中实现并使用自定义函数(UDF),包括定义、注册及在Spark SQL查询中的应用过程。通过案例演示了如何计算用户访问次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 def visitview(vtimes : Iterable[String]): Long ={
    var times = 0L
    if(vtimes.size == 0){
    }else{
      val lb = scala.collection.mutable.ListBuffer.empty[String]
      for(vtime <- vtimes){
        lb.append(vtime)
      }
      times = 1L
      val list = lb.toList.sorted
      for(i <- 0 to list.size-2){
        if(list(i+1).toLong - list(i).toLong > DEFAULT_VISIT_TIMEOUT){
          times = times + 1
        }
      }
    }
    times
  }

 

    val sparkConf = new SparkConf().setAppName("ChexunHourCount").setMaster("local[2]")
    val sc = new SparkContext(sparkConf)
    val sqlContext = new SQLContext(sc)

    sqlContext.udf.register("visitview",ConstantUtil.visitview _)

 

case class Loging(vtime:Long, userIp:Long, muid:String, uref:String, ucp:String)
val df = file.map(_.split("\t")).filter(x=>ConstantUtil.isNotPromote(x(3))).filter(y=>ConstantUtil.isNotPromote(y(2))).map(t => Loging(t(9).toLong,t(8).toLong,t(1),t(2),t(3))).toDF()
df.registerTempTable("loging")
val vvCount = sqlContext.sql("select sum(visitview(vtime)) from loging group by muid  limit 10 ").collect()

    1、自定义函数

    2、注册函数

    3、在spark sql中使用自定义函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值