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またはハイブのログにこれについての詳細はありません。