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 SQL使用簡介(2)--UDF(使用者自定義函式)SparkSQL函式
- 【Spark篇】---SparkSql之UDF函式和UDAF函式SparkSQL函式
- spark三種清理資料的方式:UDF,自定義函式,spark.sql;Python中的zip()與*zip()函式詳解//及python中的*args和**kwargsSpark函式SQLPython
- Spark SQL 開窗函式SparkSQL函式
- Spark 系列(十一)—— Spark SQL 聚合函式 AggregationsSparkSQL函式
- Hive函式(內建函式+自定義標準函式UDF)Hive函式
- Scala與Java差異(三)之函式Java函式
- scala(三)函式函式
- Scala 的方法與函式函式
- 在IntelliJ IDEA中建立和執行java/scala/spark程式IntelliJIdeaJavaSpark
- Apache Phoenix自定義函式(UDF)實踐Apache函式
- Flink1.17 版本常見的 SQL 函式總結SQL函式
- SQL中常用的字串LEFT函式和RIGHT函式詳解!SQL字串函式
- SQL中的替換函式replace()使用SQL函式
- Sql中SYSDATE函式的使用方法SQL函式
- spark sql在scala中使用的兩種方式,以及其他一些知識點SparkSQL
- kafka:spark-project專案的kafka和scala配置KafkaSparkProject
- Spark 開窗函式Spark函式
- Spark Graphx常用函式Spark函式
- scala語法 - 方法與函式函式
- 學習Scala 方法與函式函式
- Sql 中的 left 函式、right 函式SQL函式
- 【SQL】19 SQL函式SQL函式
- java自定義equals函式和hashCode函式Java函式
- sql函式SQL函式
- 關於scala中的主建構函式函式
- SQL-函式 - 聚合函式SQL函式
- spark中的聚合函式總結Spark函式
- 系統設計:使用Scala、Spark和Hadoop構建推薦系統SparkHadoop
- Spark操作開窗函式Spark函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- Spark SQL:4.對Spark SQL的理解SparkSQL
- Hive on Spark和Spark sql on Hive,你能分的清楚麼HiveSparkSQL
- Hive on Spark 和 Spark sql on Hive,你能分的清楚麼HiveSparkSQL
- Spark SQL:通用的load和save操作SparkSQL
- SQL中的cast()函式SQLAST函式
- 實踐篇:使用Spark和Scala來訓練您的第一個分類器!Spark
- 聊聊JavaScript和Scala的表示式 ExpressionJavaScriptExpress