2016-04-15 7 views
0

私はユーザエージェント文字列をString形式で保存しました。Hive ua parser UDFはIOExceptionを返します

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 

ユーザーエージェント文字列からブラウザを抽出します。だから私はua-parser-javaライブラリを使用しています。

ハイブUDFコードは以下の通りである:それは例外次のように私を与える

public class BrowserInfo extends UDF{ 

    public Text evaluate(Text input) { 

     if(input == null) return null; 
     String uaString = input.toString(); 

     Parser uaParser= null; 
     try 
     { 
      uaParser = new Parser(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     Client c = uaParser.parse(uaString); 

     return new Text(c.userAgent.family); 
     } 
} 

String代わりのTextが、同じ例外を取得してみました

Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: Unable to execute method public org.apache.hadoop.io.Text dhruv.udf.BrowserInfo.evaluate(org.apache.hadoop.io.Text) 
on object [email protected] of class dhruv.udf.BrowserInfo 
with arguments {"Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)":org.apache.hadoop.io.Text} of size 1 

。 ハイブがないと、このコードは完全に機能します。 更新日: hadoopまたはハイブのログにこれについての詳細はありません。

答えて

0

エラーを解決するには、あなたはTHINGS-

  1. regexes.yamlがパッケージの.jarファイルとそのパスに存在しているのカップルを確保するために必要なすべての依存するjarもあるparser.java
  2. に正しいです最終的な.jarファイルにパッケージ化されています。

これが役に立ちます。

関連する問題