創建函數(外部)

適用於:檢查標記是的磚運行時

創建一個臨時或永久的外部函數。臨時函數作用域在會話級別而永久的函數中創建目錄和所有可用持久會話。中指定的資源使用條款都得到第一次執行時執行人。

除了SQL接口,允許您創建自定義用戶定義標量和火花聚合函數使用Scala, Python和Java api。看到外部用戶自定義標量函數(udf)用戶定義的聚合函數(UDAFs)為更多的信息。

語法

創建(取代](臨時]函數(如果存在]function_name作為class_name(resource_locations]

參數

  • 或替換

    如果指定,函數重載的資源。這主要是有用的去接任何更改的實現功能。這個參數是相互排斥的如果存在一起,不能指定。

  • 臨時

    表示函數的範圍。當臨時指定創建的函數是有效的,可見在當前會話。沒有持久的條目的目錄的功能。

  • 如果不存在

    如果指定,創建函數隻有當它不存在。拋出的創建函數成功(沒有錯誤)如果指定的功能係統中已經存在。這個參數是相互排斥的取代一起,不能指定。

  • function_name

    函數的名稱。函數名可以選擇合格的模式名。

  • class_name

    類的名稱,它提供了創建函數的實現。實現類將擴展的一個基類如下:

    • 應該擴大UDFUDAForg.apache.hadoop.hive.ql.exec包中。

    • 應該擴大AbstractGenericUDAFResolver,GenericUDF,或GenericUDTForg.apache.hadoop.hive.ql.udf.generic包中。

    • 應該擴大UserDefinedAggregateFunctionorg.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_valuet1;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_valuet1;function_return_value- - - - - - - - - - - - - - - - - - - - - - - -2122