数据展示
这是遗传JSON字符串 ,是一个还款计划,其中包含了很多的还款计划。

{"plan":[{"principal":"1114.09","interest":"489.14","date":"2018-11-02"},{"principal":"1124.30","interest":"423.03","date":"2018-12-02"},{"principal":"1134.61","interest":"412.72","date":"2019-01-02"},{"principal":"1145.01","interest":"402.32","date":"2019-02-02"},{"principal":"1155.50","interest":"391.83","date":"2019-03-02"},{"principal":"1166.10","interest":"381.23","date":"2019-04-02"},{"principal":"1176.78","interest":"370.55","date":"2019-05-02"},{"principal":"1187.57","interest":"359.76","date":"2019-06-02"},{"principal":"1198.46","interest":"348.87","date":"2019-07-02"},{"principal":"1209.44","interest":"337.89","date":"2019-08-02"},{"principal":"1220.53","interest":"326.80","date":"2019-09-02"},{"principal":"1231.72","interest":"315.61","date":"2019-10-02"},{"principal":"1243.01","interest":"304.32","date":"2019-11-02"},{"principal":"1254.40","interest":"292.93","date":"2019-12-02"},{"principal":"1265.90","interest":"281.43","date":"2020-01-02"},{"principal":"1277.51","interest":"269.82","date":"2020-02-02"},{"principal":"1289.22","interest":"258.11","date":"2020-03-02"},{"principal":"1301.03","interest":"246.30","date":"2020-04-02"},{"principal":"1312.96","interest":"234.37","date":"2020-05-02"},{"principal":"1325.00","interest":"222.33","date":"2020-06-02"},{"principal":"1337.14","interest":"210.19","date":"2020-07-02"},{"principal":"1349.40","interest":"197.93","date":"2020-08-02"},{"principal":"1361.77","interest":"185.56","date":"2020-09-02"},{"principal":"1374.25","interest":"173.08","date":"2020-10-02"},{"principal":"1386.85","interest":"160.48","date":"2020-11-02"},{"principal":"1399.56","interest":"147.77","date":"2020-12-02"},{"principal":"1412.39","interest":"134.94","date":"2021-01-02"},{"principal":"1425.34","interest":"121.99","date":"2021-02-02"},{"principal":"1438.40","interest":"108.93","date":"2021-03-02"},{"principal":"1451.59","interest":"95.74","date":"2021-04-02"},{"principal":"1464.90","interest":"82.43","date":"2021-05-02"},{"principal":"1478.32","interest":"69.01","date":"2021-06-02"},{"principal":"1491.87","interest":"55.46","date":"2021-07-02"},{"principal":"1505.55","interest":"41.78","date":"2021-08-02"},{"principal":"1519.35","interest":"27.98","date":"2021-09-02"},{"principal":"1533.28","interest":"14.05","date":"2021-10-02"}]}

目标表建表语句,现在的需求是要将一个JSON转化为多条数据,并且增加还款期数

CREATE TABLE `app.app_cpdji_repayment_plan`(`platform_no` string COMMENT '社会信用编码', `project_id` string COMMENT '项目编号', `contract_id` string COMMENT '合同编号', `repayment_periods` INT COMMENT '还款期数', `repayment_date` string COMMENT '还款日期', `principal` DECIMAL(20,2) COMMENT '应还本金', `interest` DECIMAL(20,2) COMMENT '应还利息')COMMENT '还款计划' STORED AS PARQUET;
  1. 获取JSON 中计划的内容
 select get_json_object(repay_plan, '$.plan');
  1. 将JSON串中的各行进行区分 ,分出多行数据
 split(regexp_replace( regexp_replace( regexp_replace(get_json_object(repay_plan, '$.plan'),'\\[','') , '\\]','') ,'\\}\\,\\{' ,'\\}\\;\\{') ,'\\;')) course_scores AS json) AS table1 LATERAL VIEW json_tuple(json,'date','principal','interest')
  1. 将数组进行列转行
 explode( split(regexp_replace( regexp_replace( regexp_replace(get_json_object(repay_plan, '$.plan'),'\\[','') , '\\]','') ,'\\}\\,\\{' ,'\\}\\;\\{') ,'\\;')) course_scores AS json) AS table1 LATERAL VIEW json_tuple(json,'date','principal','interest') d AS DATE1, principal,interest;
  1. 完成数据加工,进行按照日期排序
INSERT INTO app.app_cpdji_repayment_plan
SELECT platform_no,project_no,contract_no,ROW_NUMBER() over(PARTITION BY project_no,contract_no,platform_noORDER BY DATE1 ) rt,DATE1,principal,interest
FROM ( SELECT json,project_no,contract_no,platform_noFROM app.app_cpdji_view_ods_prodc_inv_contract LATERAL VIEW explode( split(regexp_replace( regexp_replace( regexp_replace(get_json_object(repay_plan, '$.plan'),'\\[','') , '\\]','') ,'\\}\\,\\{' ,'\\}\\;\\{') ,'\\;')) course_scores AS json) AS table1 LATERAL VIEW json_tuple(json,'date','principal','interest') d AS DATE1, principal,interest;

这样一个简单的数据解析就完成了,不得不说HIVE进行JSON解析是真的很不错。

花费了 1100多秒。


一共200亿的数据量,这个效率还是太棒了。

使用HIVE 自带的JSON 函数进行json解析 同时解析JSON数组相关推荐

  1. oracle 11g json 函数,在Oracle 11g中支持JSON(Support for JSON in Oracle 11g)

    在Oracle 11g中支持JSON(Support for JSON in Oracle 11g) Oracle 11g是否支持JSON? 我的意思是像在PL / SQL查询中操纵JSON对象. 我 ...

  2. 大数据框架之Hive:第8章 函数

    第8章 函数 8.1 函数简介 Hive会将常用的逻辑封装成函数给用户进行使用,类似于Java中的函数. 好处:避免用户反复写逻辑,可以直接拿来使用. 重点:用户需要知道函数叫什么,能做什么. Hiv ...

  3. 大数据基础之Hive(四)—— 常用函数和压缩存储

    作者:duktig 博客:https://duktig.cn (文章首发) 优秀还努力.愿你付出甘之如饴,所得归于欢喜. 更多文章参看github知识库:https://github.com/dukt ...

  4. Hive学习笔记三之函数操作

    文章目录 5 函数 5.1 系统内置函数 5.2 常用内置函数 5.2.1 空字段赋值 5.2.2 CASE WHEN THEN ELSE END(类似于java中的switch case) 5.2. ...

  5. sql与nosql_SQL Server JSON函数:NoSQL与关系世界之间的桥梁

    sql与nosql In this article, we will explain what JSON is, what are the SQL Server JSON functions intr ...

  6. mediarecorder添加时间戳_Python脚本实现数据处理(官方实例)和Hive自带时间函数...

    官网示例 官网地址: https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-ApacheWebl ...

  7. 深入浅出学Hive:Hive内建操作符与函数开发

    目录: 初始Hive Hive安装与配置 Hive内建操作符与函数开发 Hive JDBC Hive参数 Hive高级编程 Hive QL Hive Shell基本操作 Hive优化 Hive体系结构 ...

  8. Hive系列(四)函数

    Hive函数 一.常用内置函数 内置函数查看 关系运算 数学运算 逻辑运算 数值计算 日期函数 条件函数 字符串函数 集合统计函数 二.lateral view 与 explode以及reflect和 ...

  9. json函数 presto_Hive sql和Presto sql的一些对比

    最近由于工作上和生活上的一些事儿好久没来博客园了,但是写博客的习惯还是得坚持,新的一年需要更加努力,困知勉行,终身学习,每天都保持空杯心态.废话不说,写一些最近使用到的Presto SQL和Hive ...

  10. Hive常见查询操作与函数汇总

    目录 一.查询操作 1.基本查询(Like VS RLike) 2.Join语句 3.分组 4.排序 sort by 和 distribute by 6.分桶抽样 二.函数汇总 1.查询函数 行与列的 ...

最新文章

  1. Android程序label居中
  2. AlwaysOn只读路由配置
  3. CentOS-6.4-x86_64 下安装mysql5.6
  4. 720 智能硬件与 LeanCloud 云端的默契协作
  5. 正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码
  6. Sonar - 部署常见问题及解决方法
  7. 防火墙、WAF、IPS、IDS都是什么
  8. DeepWalk学习
  9. Libevent源码分析-----开篇
  10. 如何使用速问速答求解一元二次方程
  11. 暗影精灵4 i5-8300H 核显驱动完美触控板声音亮度调节电池电量显示黑苹果EFI引导
  12. 77. 组合 - 递归
  13. 互联网公司的三高问题
  14. 【C语言】之实现查找重复元素
  15. Ubuntu20与win10共享文件夹
  16. 【定量分析、量化金融与统计学】R语言方差分析的outliers陷阱
  17. ios和android下数字没有垂直居中,手机端设置小号字体的上下居中问题
  18. 软测项目辅导综合教程
  19. web3j错误解决:okhttp3.RequestBody.create(Ljava/lang/String;Lokhttp3/MediaType;)Lokhttp3/RequestBody
  20. Unable to instantiate appComponentFactory

热门文章

  1. 【内核调度、负载均衡】【load_balance】
  2. 油脂集中润滑循环指示器XZQ-1、XZQ-2
  3. 数据库管理 第一关 用户
  4. 题目6:平方和与和平方的差是多少?
  5. 如何更改本机git绑定账号
  6. springboot微信信小程序授权登录代码
  7. 博士申请 | 香港中文大学(深圳)林天麟老师招收人工智能全奖博士/RA/实习生...
  8. 三菱M80/M800系列数控系统二次开发介绍01-全局介绍
  9. 耶格肺功能仪软件 - 通气测试
  10. Kerberos认证协议中TGS服务器可以去掉吗?