ITPub博客

首页 > 大数据 > 数据分析 > Spark SQL scala和java版本的UDF函数使用

Spark SQL scala和java版本的UDF函数使用

原创 数据分析 作者:破棉袄 时间:2016-05-04 10:22:19 0 删除 编辑

java:

//注册UDF

sqlContext.udf.register("getImei",new GetImei,StringType)


  1. public class GetImei implements UDF1<String,String>{     //入参类型和返回类型

  2.     
  3.     @Override
  4.     public String call(String jsonStr){
  5.         
  6.     try{
  7.         
  8.             if(jsonStr.contains("imei")){              //安卓类型
  9.                 int startNum = jsonStr.indexOf("imei");
  10.          return jsonStr.substring(startNum+7,startNum+22);
  11.             }else if(jsonStr.contains("idfv")){ //ios类型
  12.                  int startNum = jsonStr.indexOf("idfv");
  13.              return jsonStr.substring(startNum+7,startNum+43);
  14.             }else{                                     //没有值需往前推    
  15.                 return "None";
  16.             }
  17.         }catch(Exception e){
  18.             return "None";
  19.         }
  20.         
  21.     }

  22. }

scala:

  1. def getLen(text:String):Int = text.length()
  2. sqlContext.udf.register("getLen",getLen _)
  3. sqlContext.sql("select getLen(appId) from wzx limit 10").collect().foreach(println)
  4.     
  5. def getLenBool(text:String,len:Integer):Boolean = text.length()>len
  6. sqlContext.udf.register("getLenBool",getLenBool _)
  7. sqlContext.sql("select getLenBool(appId,10) from wzx limit 10").collect().foreach(println)

自定义时间戳转换函数 类似于FROM_UNIXTIME:

  1. import java.text.SimpleDateFormat
  2. import java.util.Date
  3. import java.util.TimeZone
  4. def getTimeBySeal(seal:Long):String={
  5.     val format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
  6.     format.setTimeZone(TimeZone.getTimeZone("GMT+8"))
  7.     val time=new Date(seal*1000L)
  8.     val d = format.format(time)
  9.     d
  10. }
  11.    
  12. sqlContext.udf.register("convertTime",getTimeBySeal _)


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29754888/viewspace-2093226/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-07-16

  • 博文量
    180
  • 访问量
    1158186