hive (2.01)读取 json 格式 的处理方式 2018-4-24
测试json 数据 格式 样例:
{"data":{"dt":"2018-12-13","hu":"17:17:17"},"web":{"web":"maitianzaixian.com.cn","whichfor":"computer"},"house":{"home":"yuanyangguoji","areo":400,"price":3400,"num":"10#102"}}
前期的 准备工作 :
需要根据hive的版本 去下载相关包:(放在 lib中)
json-serde-1.3.8-jar-with-dependencies.jar
有的版本 还需要 hive-hcatalog-core-2.0.1.jar (一般hive自带)
然后启动hive:
《第一种方式》:直接当成一个字段去处理:(这种方式不行的)
执行样例:
create external table if not exists json_01(
json string
)
row format delimited
lines terminated by '\n'
stored as textfile
结果: 虽然可以select * from json_01 但是 内部的 第二层结构就无法查看了 此方法不行
《第二种方式》:还是当成一个字段 只不过我需要用json 格式去解析:(一般较常用的方法)
create external table if not exists json_old(
json string
)
row format serde 'org.apache.hadoop.hive.contrib.serde2.JsonSerde'
stored as textfile
有可能上面的引用包 不对,hive的版本过低缘故 那就换成 ‘org.openx.data.jsonserde.JsonSerDe’
查看 方式 也有两种:get_json_object 和 json_tuple
<get_json_object>方式:
select * from json_01 -----------------------整个json
select get_json_object(js.json,'$.data'),get_json_object(js.json,'$.web') from json_01 js;
select get_json_object(js.json,'$.data.dt'),get_json_object(js.json,'$.web.web') from json_01 js; ----------嵌套
select get_json_object(data.dl,'$.dt') from (select get_json_object(js.json,'$.data') as dl from json_01 js) data;
<json_tuple>方式
select json_tuple(json,"data") from json_01; --------------MR
select json_tuple(get_json_object(json,'$.data'),"dt","hu") from json_01
select js2.js2_data_dt,js3.js3_web_web,js4.js4_home from json_01 js lateral view json_tuple(js.json,'data','web','house')js1 as js1_data,js1_web,js1_house
lateral view json_tuple(js1.js1_data,'dt','hu')js2 as js2_data_dt,js2_data_hu
lateral view json_tuple(js1.js1_web,'web','whichfor')js3 as js3_web_web,js3_web_whichfor
lateral view json_tuple(js1.js1_house,'home','areo','price','num')js4 as js4_home,js4_areo,js4_price,js4_num
《带有其他结构的 json格式》:
数据变种:
{"data":{"dt":"2018-12-13","hu":"17:17:17"},"web":{"web":"maitianzaixian.com.cn","whichfor":"computer"},"house":[{"home":"yuanyangguoji","areo":400,"price":3400,"num":"10#102"},{...........}]}
--------------------------------数据挖掘插件中 一些配置项 会带有 []
去掉中括号:
lateral view posexplode(split(regexp_replace(regexp_replace(js1.js1_house,'\\}\\,\\{','\\}\\|\\|\\{'),'\\[|\\]',''), '\\|\\|')) js11
regexp_replace(js1.js1_house,'\\}\\,\\{','\\}\\|\\|\\{') ===> (将 data 中的 “ },{”转成了 “}||{” )
regexp_replace(regexp_replace(js1.js1_house,'\\}\\,\\{','\\}\\|\\|\\{'),'\\[|\\]','') ===> 将 “[]” 变成 “” 空值
split(regexp_replace(regexp_replace(js1.js1_house,'\\}\\,\\{','\\}\\|\\|\\{'),'\\[|\\]',''), '\\|\\|') 将 data 按 “||”切分
json array 格式 转成了一个数组 再有posexplode 变成 (p,json)键值对
《第三种方式》:转换成map 结构 可以用到两种解析包:
create external table if not exists json(
data map<string,string>,
web map<string,string>,
house map<string,string>
)
row format serde 'org.openx.data.jsonserde.JsonSerDe'
stored as textfile
create external table if not exists json(
data map<string,string>,
web map<string,string>,
house map<string,string>
)
row format serde 'org.apache.hive.hcatalog.data.JsonSerDe'
stored as textfile
select data['dt'] from json
hive (2.01)读取 json 格式 的处理方式 2018-4-24相关推荐
- python读取json格式的超参数
python读取json格式的超参数 json文件: {"full_finetuning": true,"max_len": 180,"learnin ...
- 读取json格式的图片、文字并保存成图片
读取json格式的图片.文字并保存成图片 说明 从数据库中获取到图片.中文.英文信息后,将其合成json文件,图片格式为base64格式,需要将其转成二进制形式,然后将其保存成图片,将中文.英文信息保 ...
- HTML页面之间传递Json格式数组的方式
HTML页面之间传递Json格式数组的方式 如下: a.html localStorage.setItem("userinfoList", JSON.stringify(list) ...
- 使用 Python 读取 json 格式文件并查重
场景如下: 格式为 json 的文件中存在多行测试数据,需要判断文件中 "esbsn" 字段的值是否存在重复数据 {"time":"2022-08-0 ...
- netcore读取json文件_.net core读取json格式的配置文件
在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用j ...
- pyhton读取json格式的气象数据
原文关于读取pm25.in气象数据的pyhton方法,以及浅析python json的应用 以pm25.in网站数据为例. 1.方法介绍 首先感谢pm25.in提供了优质的空气污染数据,为他们的辛勤劳 ...
- python读取json格式文件大量数据,以及python字典和列表嵌套用法详解
1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...
- python的json格式_python读取json格式
对于处理json格式,如果是要把python数据格式转换成json,使用json.dumps(),如: data = { 'name' : 'ACME', 'shares' : 100, 'price ...
- web 后台返回json格式数据的方式(status 406)
1.在类上使用注解 @RestController public class HttpComentInterface {} 2.在方法是使用注解 @ResponseBody @RequestMapp ...
最新文章
- 华为服务器面板显示,服务器面板怎么查看
- 三线压力传感器原理_进气压力传感器原理与检修
- 小程序中ajax返回数据,请问在小程序中如何从请求success中将数据返回给对象data?...
- 小米9 Pro 5G评测:史上最低价5G手机
- .net找List1和List2的差集
- debian下,下载linux内核
- 用户自治的数字身份在我国的标准
- 计算机出现假桌面怎么解决办法,Win10系统下“AppHangXProcB1”导致桌面频繁假死如何解决?...
- SVM作业题:支持向量机求最优分类面
- linux怎么把dos改成unix_如何将文本文件在 Unix和DOS格式之间转换
- PIPIOJ1451: PIPI的数学题VIII
- 面向对象开发期末复习概述(四)
- python 将单词分割成字母_拆分两个字母创建单词python 3
- wincc 激活记录运行系统
- 活动预告丨易盾CTO朱浩齐将出席2018 AIIA大会,分享《人工智能在内容安全的应用实践》...
- 初学Web前端会用到开发工具【零基础web前端入门视频教程】
- GPU 利用率低常见原因分析及优化
- python数据导出excel模板中的脚本_Python实现将数据库一键导出为Excel表格的实例...
- js的三种弹出对话框
- 商务计算机比赛,湖南商务职业技术学院获全国职业院校技能大赛“计算机网络应用”赛项二等奖...
热门文章
- 厦门大学计算机科学庄朝晖,庄朝晖-厦门大学信息学院 | 掌握信息,把握未来...
- http://cued.xunlei.com/
- 【Qt一骚操作】Qt 开发中触发鼠标悬停事件
- samba 服务搭建
- AS5600 12 位可编程非接触式电位器
- 服务器主板开机显示器无信号,显示器无信号,详细教您怎么解决电脑开机后显示器无信号...
- 服务器显卡无信号,电脑开机主机正常运行显示器显示无信号
- 基于ARM的嵌入式Linux移植真实体验1-基本概念
- java零散知识记录
- 客户拖尾款,怎么办?