JSONS上hive中的拆分函数
Posted
技术标签:
【中文标题】JSONS上hive中的拆分函数【英文标题】:Split Function in hive on JSONS 【发布时间】:2017-01-15 18:08:36 【问题描述】:我在 hive 中处理 JSON 数组。我知道它也可以用 JSON serde 处理,但我想用 get_json_object 或 json_tuple 和正则表达式来处理。所以我关注链接http://mechanics.flite.com/blog/2014/04/16/using-explode-and-lateral-view-in-hive/
它给出了这样的 Json 文件
"key1":"0","key2":"11.800","info":"[\"id\":\"1234\",\"v\":\"3\",\"id\":\"5678\",\"v\":\"3\"]","key3":"3"
为什么它需要在 id 和其他所有值前面有斜线??观察如下所示
JSON With REGEX
当我们在从上述结果中得到的正则表达式上添加拆分时,我们得到以下内容
["\"id\":\"1234\",\"v\":\"3\"","\"id\":\"5678\",\"v\":\"3\""]
如果我删除源 Json 文件中的斜杠,ebrything 将变为 null。摆脱这种情况的可能方法是什么。
【问题讨论】:
它正在转义键“info”的 value 内的双引号。为什么不单引号,我不知道。你想从那个字符串中得到什么? 读取 hive 中的数据有一些方法。我只想要字符串形式的爆炸键值对,因为这些只对我有用。 【参考方案1】:您看到的对象是有效的 JSON,在这种情况下,键 info 的值是一个字符串(看起来更像 JSON,令人困惑)不是对象,数组,或数字,但一个字符串。由于这个字符串中有一些双引号,所以它们被转义了。
显示这个:
JSON.parse(JSON.stringify("key1":"0","key2":"11.800","info":"[\"id\":\"1234\",\"v\":\"3\",\"id\":\"5678\",\"v\":\"3\"]","key3":"3"));
结果:
【讨论】:
以上是关于JSONS上hive中的拆分函数的主要内容,如果未能解决你的问题,请参考以下文章