hive之----建立udf自定義函式或刪除函式異常: Failed to read external resource
阿新 • • 發佈:2019-01-30
1. 建立永久函式:
首先將打好的jar包上傳好hdfs
執行命令 :
create function 函式名 as 'udf類的全路徑(包名+類名)' using jar "自己的jar包存放在hdfs的路徑";
原因:
由於hdfs後面的ip加上埠號導致
解決辦法 :
hdfs的路徑中: 按理說ip加上埠號是沒問題的, 可是要保證埠號是正確的, 首先在C:\Windows\System32\drivers\etc\hosts裡對映主機名和ip, 在hosts最後追加,如:
155.155.155.155 superman (就是"ip 主機名"的形式進行對映)
只加上主機名或者ip或者什麼也不寫(如: hdfs:///udfjars/math.jar)後面不跟埠號也會找到對應的hdfs叢集, 所以這裡建議hdfs的路徑後面不跟埠號, 即可解決上述問題
或者
上面兩種方法直接去掉埠號或者乾脆連主機名或ip都不要都可解決該問題
2. 刪除建立的函式時異常
和上面的報錯一樣, 不能讀取外部的資源. 不過這種情況一般很少遇到, 是因為在刪除之前匯入了一個外部的jar包 . 如:
在成功建立函式後再次建立函式(這一次加上上面那個報錯的埠, 即使報錯也會將jar包新增), 這時刪除時就會報錯
解決辦法:
很簡單, 將埠號去掉
思考:
在刪除函式過程中, 要重新建立函式來新增正確的jar包, 能不能使用其他命令直接將jar包新增進去,而不用再次執行建立函式的命令,這種方法感覺有點多餘 , add jar hdfs://qfnode02/self/udfjars/GP1706LogAnalystic-1.0.jar; 用這個方法雖然可以新增進去,但是對於永久函式仍然不能操作!! 這個問題就留給大家思考吧 ! 想到方法的大神記得在評論區賜教一下!