創建函數(外部)
適用於:磚運行時
創建一個臨時或永久的外部函數。臨時函數作用域在會話級別而永久的函數中創建目錄和所有可用持久會話。中指定的資源使用
條款都得到第一次執行時執行人。
除了SQL接口,允許您創建自定義用戶定義標量和火花聚合函數使用Scala, Python和Java api。看到外部用戶自定義標量函數(udf)和用戶定義的聚合函數(UDAFs)為更多的信息。
參數
或替換
如果指定,函數重載的資源。這主要是有用的去接任何更改的實現功能。這個參數是相互排斥的
如果不存在
一起,不能指定。臨時
表示函數的範圍。當
臨時
指定創建的函數是有效的,可見在當前會話。沒有持久的條目的目錄的功能。如果不存在
如果指定,創建函數隻有當它不存在。拋出的創建函數成功(沒有錯誤)如果指定的功能係統中已經存在。這個參數是相互排斥的
或取代
一起,不能指定。函數的名稱。函數名可以選擇合格的模式名。
class_name
類的名稱,它提供了創建函數的實現。實現類將擴展的一個基類如下:
應該擴大
UDF
或UDAF
在org.apache.hadoop.hive.ql.exec
包中。應該擴大
AbstractGenericUDAFResolver
,GenericUDF
,或GenericUDTF
在org.apache.hadoop.hive.ql.udf.generic
包中。應該擴大
UserDefinedAggregateFunction
在org.apache.spark.sql.expressions
包中。
resource_locations
的資源列表包含函數的實現及其依賴項。
語法:
使用{{(JAR|文件|存檔)resource_uri},…}
例子
——1。創建一個簡單的UDF SimpleUdf,增量提供的積分值10。——進口org.apache.hadoop.hive.ql.exec.UDF;——公共類SimpleUdf延伸UDF {——公共int評估(int值){——返回值+ 10;- - -}- - -}——2。編譯並把它在一個名為“SimpleUdf的JAR文件。jar在/ tmp。——創建一個名為“測試”的表並插入兩行。>創建表測試(c1INT);>插入成測試值(1),(2);——創建一個永久的函數稱為“simple_udf”。>創建函數simple_udf作為“SimpleUdf”使用JAR“/ tmp / SimpleUdf.jar”;——驗證函數是在注冊表中。>顯示用戶功能;函數- - - - - - - - - - - - - - - - - -默認的。simple_udf——調用函數。每一個選定的值應該是增加了10。>選擇simple_udf(c1)作為function_return_value從t1;function_return_value- - - - - - - - - - - - - - - - - - - - - - - -1112——創建一個臨時函數。>創建臨時函數simple_temp_udf作為“SimpleUdf”使用JAR“/ tmp / SimpleUdf.jar”;——驗證新創建的臨時函數是在注冊表中。——臨時函數沒有一個合格的——與之關聯的模式。>顯示用戶功能;函數- - - - - - - - - - - - - - - - - -默認的。simple_udfsimple_temp_udf——1。提供修改SimpleUdf”年代實現添加積分值20。——進口org.apache.hadoop.hive.ql.exec.UDF;——公共類SimpleUdfR延伸UDF {——公共int評估(int值){——返回值+ 20;- - -}- - -}——2。編譯並把它在一個名為“SimpleUdfR的jar文件。jar在/ tmp。——取代“simple_udf”的實現>創建或取代函數simple_udf作為“SimpleUdfR”使用JAR“/ tmp / SimpleUdfR.jar”;——調用函數。每一個選定的值應該是增加了20倍。>選擇simple_udf(c1)作為function_return_value從t1;function_return_value- - - - - - - - - - - - - - - - - - - - - - - -2122