Spark SQL提供了很多內建函數來滿足您的計算需求,您也可以通過建立自訂函數(UDF)來滿足不同的計算需求。UDF在使用上與普通的內建函數類似。本文為您介紹Spark SQL中使用Hive自訂函數的流程。
前提條件
已在Hive中建立了UDF,詳情請參見開發UDF。
使用Hive UDF
使用檔案傳輸工具,上傳產生的JAR包至叢集任意目錄(本文以test目錄為例)。
上傳JAR包至HDFS或OSS(本文以HDFS為例)。
通過SSH方式登入叢集,詳情請參見登入叢集。
執行以下命令,上傳JAR包到HDFS。
hadoop fs -put /test/hiveudf-1.0-SNAPSHOT.jar /user/hive/warehouse/您可以通過
hadoop fs -ls /user/hive/warehouse/命令,查看是否上傳成功。待返回資訊如下所示表示上傳成功。Found 1 items -rw-r--r-- 1 xx xx 2668 2021-06-09 14:13 /user/hive/warehouse/hiveudf-1.0-SNAPSHOT.jar
建立UDF函數。
執行以下命令,進入Spark SQL命令列。
spark-sql執行以下命令,應用產生的JAR包建立函數。
create function myfunc as "org.example.MyUDF" using jar "hdfs:///user/hive/warehouse/hiveudf-1.0-SNAPSHOT.jar";說明代碼中的
myfunc是UDF函數的名稱,org.example.MyUDF是開發UDF中建立的類,hdfs:///user/hive/warehouse/hiveudf-1.0-SNAPSHOT.jar為上傳JAR包到HDFS的路徑。
執行以下命令,使用UDF函數。
該函數與內建函數使用方式一樣,直接使用函數名稱即可訪問。
select myfunc("abc");返回如下資訊。
OK abc:HelloWorld