首页 > 编程语言 > 详细

hive解析json数组问题

时间:2020-07-13 23:41:22      阅读:72      评论:0      收藏:0      [点我收藏+]

问题描述:json数组中存在特殊字符,无法 利用split切分数组元素。
解决思路:(1)自定义udtf;(2)利用spark-sql

一般的场景:json字符串一个array, array中有几个网址如www.cnblogs.com等。
解决方法如下:

--- [{"url":"www.cnblogs.com","title":"cnblogs"},{"url":"www.example.com","title":"example"}]
select explode(
  split(
    regexp_replace(
      regexp_replace(‘[{"url":"www.cnblogs.com","title":"cnblogs"},{"url":"www.example.com","title":"example"}]‘, ‘[\\]\\[]‘,‘‘)
      ,‘\\}\\,\\{‘,‘\\}\\;\\{‘)
    ,‘\\;‘)
) lfo

split这种方式处理json存在破坏json完整性,稳妥的办法是全程利用json的方法

# url_arr = ‘[{"url":"www.cnblogs.com","title":"cnblogs"},{"url":"www.example.com","title":"example"}]‘
df.select(‘some_col‘, 
	explode(from_json(‘url_arr‘, ArrayType(StringType())))
).toDF(‘some_col‘,‘url_json‘)

输出结果:
{"url":"www.cnblogs.com","title":"cnblogs"}
{"url":"www.example.com","title":"example"}

hive解析json数组问题

原文:https://www.cnblogs.com/dobbin2018/p/13296419.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!