Spark SQL scala和java版本的UDF函式使用
java:
//註冊UDF
sqlContext.udf.register("getImei",new GetImei,StringType)
-
public class GetImei implements UDF1<String,String>{ //入參型別和返回型別
-
-
-
@Override
-
public String call(String jsonStr){
-
-
try{
-
-
if(jsonStr.contains("imei")){ //安卓型別
-
int startNum = jsonStr.indexOf("imei");
-
return jsonStr.substring(startNum+7,startNum+22);
-
}else if(jsonStr.contains("idfv")){ //ios型別
-
int startNum = jsonStr.indexOf("idfv");
-
return jsonStr.substring(startNum+7,startNum+43);
-
}else{ //沒有值需往前推
-
return "None";
-
}
-
}catch(Exception e){
-
return "None";
-
}
-
-
}
-
- }
scala:
-
def getLen(text:String):Int = text.length()
-
sqlContext.udf.register("getLen",getLen _)
-
sqlContext.sql("select getLen(appId) from wzx limit 10").collect().foreach(println)
-
-
def getLenBool(text:String,len:Integer):Boolean = text.length()>len
-
sqlContext.udf.register("getLenBool",getLenBool _)
- sqlContext.sql("select getLenBool(appId,10) from wzx limit 10").collect().foreach(println)
自定義時間戳轉換函式 類似於FROM_UNIXTIME:
-
import java.text.SimpleDateFormat
-
import java.util.Date
-
import java.util.TimeZone
-
def getTimeBySeal(seal:Long):String={
-
val format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- format.setTimeZone(TimeZone.getTimeZone("GMT+8"))
- val time=new Date(seal*1000L)
- val d = format.format(time)
-
d
-
}
-
- sqlContext.udf.register("convertTime",getTimeBySeal _)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29754888/viewspace-2093226/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spark SQL學習——UDF、UDAF和開窗函式SparkSQL函式
- 【Spark篇】---SparkSql之UDF函式和UDAF函式SparkSQL函式
- Spark SQL使用簡介(2)--UDF(使用者自定義函式)SparkSQL函式
- Spark註冊UDF函式,用於DataFrame DSL or SQLSpark函式SQL
- Spark Sql 函式使用SparkSQL函式
- 【Spark篇】---SparkSQL中自定義UDF和UDAF,開窗函式的應用SparkSQL函式
- spark三種清理資料的方式:UDF,自定義函式,spark.sql;Python中的zip()與*zip()函式詳解//及python中的*args和**kwargsSpark函式SQLPython
- SQL Server 2005中的UDF(使用者定義函式)SQLServer函式
- scala 函式和方法函式
- Spark SQL 開窗函式SparkSQL函式
- 開發hive UDF函式Hive函式
- 【Scala篇】--Scala中的函式函式
- scala函式函式
- Spark 系列(十一)—— Spark SQL 聚合函式 AggregationsSparkSQL函式
- Hive函式(內建函式+自定義標準函式UDF)Hive函式
- Scala與Java差異(三)之函式Java函式
- scala(三)函式函式
- Scala偏函式函式
- Scala本地函式函式
- Scala 的方法與函式函式
- Scala的高階函式函式
- SQL CHARINDEX函式的使用SQLIndex函式
- Apache Phoenix自定義函式(UDF)實踐Apache函式
- 自定義UDF函式應用異常函式
- 【Java】函式使用Java函式
- scala 函式程式設計函式程式設計
- 在IntelliJ IDEA中建立和執行java/scala/spark程式IntelliJIdeaJavaSpark
- sql CHARINDEX,REPLACE函式使用SQLIndex函式
- Spark 開窗函式Spark函式
- Spark Graphx常用函式Spark函式
- Hive中配置與編寫自定義UDF函式Hive函式
- kafka:spark-project專案的kafka和scala配置KafkaSparkProject
- scala語法 - 方法與函式函式
- 學習Scala 方法與函式函式
- spark sql在scala中使用的兩種方式,以及其他一些知識點SparkSQL
- SQL中的替換函式replace()使用SQL函式
- SQL-Server中datepart函式的使用SQLServer函式
- Hive中新增自定義函式(UDF)方法及實踐Hive函式