栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

spark解析复杂json,json内结构为主表嵌套多个从表,每个从表中又嵌套表,嵌套层级有的在5次以上。Array嵌套Array、每条json的字段数量不一定。。。。

spark解析复杂json,json内结构为主表嵌套多个从表,每个从表中又嵌套表,嵌套层级有的在5次以上。Array嵌套Array、每条json的字段数量不一定。。。。


这个json字符串很长,结构也很复杂,手工构造struct的话不太现实

开始

一开始按如下的方式对数据进行解析
zip文件–》RDD–〉spark.read.json(dataRDD)–〉Dataframe

通过spark.sql(

,key1.key2.key3
,…)

可以取到[key1.key2.key3]下的值

但是这个方法有个缺点,对于Array类型的节点,只能取一次,无法循环获取Array内的所有元素

于是准备借助其它json包对RDD内的jsonString进行解析,然后对Array类型的节点进行遍历

参考资料

scala解析json —— json4s 解析json方法汇总

开发工具-scala处理json格式利器-json4s

scala解析json —— json4s 解析json方法汇总

json4s

scala内置的json处理包
这个包内的解析方法可能没有继承serialization,无法在闭包环境下调用
RDD.map(x=>{

})
spark在分发计算任务到executer上时无法序列化对象

此外,用这个包的话,scala语法写起来很不清晰,看这有些绕,在遍历Array类型节点内的元素时写起来很不方便,不如下面fastJson用起来方便

fastJson

     com.alibaba
     fastjson
     1.2.47
 

阿里出品的json处理包
可以在map内调用

RDD.map(x=>{

})

对Array类型的节点:jsonParseObject.getJSONArray

对于其它类型的节点:

参考资料

Scala【json字符串和json对象互相转换】

Spark通过修改Dataframe的schema给表字段添加注释

学习笔记:spark读取json存在缺失列的问题

Spark采坑记录(一):json格式字符串转化为复杂数据结构

Java 使用fastjson 获取嵌套json

Java 中 JSON 的使用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/742477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号