UDFJson反斜杠解析出错记录
来源:互联网 发布:人工智能物联网龙头股 编辑:程序博客网 时间:2024/04/26 01:21
这个类在org.apache.hadoop.hive.ql.udf包 下,使用org.codehaus.jackson三方库解析Json字符串。
具体在Hive udf中的名字叫get_json_object。
当json字符串中有反斜杠"\"时,解析会出错
如:
{"title":"思科Q4收入估$79.2亿 前景阴云笼罩","ItemType":"NewsBase","keywords":"思科Q4收入估\$79.2亿 前景阴云笼罩","random":"1420253511075","callback":"BCore.instances[2].callbacks[1]","user_agent":"Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML; like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5","is_newgid":"false","uuid":"DS.Input:b56c782bcb75035d:00002116:003dcd40:54a75947","ptime":"1.1549997E9"}
get_json_object(attr,"$.title")会返回NULL,虽然title并不是null。这样就会造成一个混淆,当json字串中真的没有title属性时,方法也会返回null。
因此使用此udf查询结果会不正确。
源码:
有这样一段注释:
/**
* Extract json object from a json string based on json path specified, and
* return json string of the extracted json object. It will return null if the
* input json string is invalid.*/同样代码实现上:
UDFJson.java#evaluate():
...
if (extractObject == null) {
try {
extractObject = MAPPER.readValue(jsonString, MAP_TYPE);
} catch (Exception e) {
return null;
}
extractObjectCache.put(jsonString, extractObject);
}...
前面提到,UDFJson解析字串是用的jackson,
在MAPPER.readValue(jsonString, MAP_TYPE);中遇到非法字符时'\'会在catch块里return null
解决办法:
在代码里加上这一句:
- UDFJson反斜杠解析出错记录
- firefox中解析反斜杠和斜杠的问题
- 斜杠/ 与反斜杠/
- 反斜杠正斜杠
- 斜杠和反斜杠
- 斜杠和反斜杠
- 斜杠与反斜杠
- 斜杠与反斜杠
- 斜杠与反斜杠
- 斜杠与反斜杠
- 斜杠“/” 反斜杠“\”
- 斜杠和反斜杠
- 斜杠 反斜杠
- /斜杠-\反斜杠问题
- Android 解析带反斜杠的json数据
- jacson解析json串value带反斜杠报错
- 关于 斜杠 反斜杠 双斜杠 双反斜杠
- 正斜杠和反斜杠
- 如何正确遍历删除List中的元素
- uWSGI, Gunincorn, 啥玩意儿?
- hbase 单机、伪分布、完全分布部署
- Unity3D开发一些初级问题
- OnItemSelectedListener事件与二级联动
- UDFJson反斜杠解析出错记录
- DP
- VGA显示--ROM部分
- 安卓下怎么获取手机中不同标签下的号码
- 简单明了一张图,帮你选择开源协议
- Android 开发 之 JNI入门 - NDK从入门到精通
- Android ,在争议中逃离 Linux 内核的 GPL 约束
- where top1000(X)<=10等条件谓词提前问题记录
- 认识User-Agent