DLA处理JSON对象连续存放到同一行的场景

简介: 背景用户有个场景,就是所有JSON数据对象连续存放在同一行。例如:{"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thom...

背景

用户有个场景,就是所有JSON数据对象连续存放在同一行。例如:

{"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}{"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}{"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}{"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}

如何对这种数据文件进行分析、查询。通常的做法是用Spark、Hive等大数据平台,编写UDF函数,或者自定义实现Hive TextInputFormat,来处理这种类型的数据。阿里云Data Lake Analytics内置化支持对这种数据的处理能力,无需编写UDF,无需自定义实现Hive TextInputFormat,仅仅需要3步,就可以在云上轻松处理、查询、分析这种JSON数据。如果您还有其他特殊JSON数据存储格式需要最为便捷的处理方法,请到阿里云Data Lake Analytics(https://www.aliyun.com/product/datalakeanalytics)云产品提工单,我们以最快的速度满足您的需求。

第一步:JSON数据到阿里云OSS

利用各种手段,将JSON数据投递到OSS(https://www.aliyun.com/product/oss)中。
通常,对于云上日志链路,还有一种JSON到OSS的投递链路,可以参考“云原生日志数据分析上手指南”(https://zhuanlan.zhihu.com/p/69399941)其中的JSON部分。

第二步:DLA中建表

参考上述“云原生日志数据分析上手指南”(https://zhuanlan.zhihu.com/p/69399941),其中已经有海量JSON数据的分区模式建表方法了。本例中,以非分区表为例,假设,数据文件中每一行一个JSON数据,JSON数据放置的OSS路径为:

oss://your_bucket/json_data/...

则,在DLA中执行建表:

CREATE EXTERNAL TABLE single_line_json (
   data STRING,
)
STORED AS 
INPUTFORMAT 'com.alibaba.cloud.dla.inputformat.JsonSingleLineInputFormat'  
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'oss://your_bucket/json_data/';

第三步:利用DLA函数进行处理

利用如下函数对JSON数据进行补全:

wrap_ifnotexist(target_string, '{', '}')

然后即可使用Data Lake Analytics支持的各种JSON函数进行处理:

例如:

select json_parse(wrap_ifnotexist(data, '{', '}')) as a from single_line_json;

->

+-----------------------------------------------------------------------------------------------------------------------------------------------+
| a                                                                                                                                             |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
| {"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}   |
| {"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}   |
| {"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}   |
| {"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}} |
+-----------------------------------------------------------------------------------------------------------------------------------------------+

Data Lake Analytics首购和流量包优惠

首购用户1元10TB,流量包阶梯折扣优惠:https://et.aliyun.com/bdad/datalake
产品详情:https://www.aliyun.com/product/datalakeanalytics
云栖社区:https://yq.aliyun.com/teams/396
知乎社区:https://zhuanlan.zhihu.com/data-lake-analytics

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
19天前
|
Web App开发 JSON JavaScript
SAP UI5 应用程序小技巧 - 一键将 JSON 对象导出成本地 json 文件
SAP UI5 应用程序小技巧 - 一键将 JSON 对象导出成本地 json 文件
35 0
|
19天前
|
JSON 应用服务中间件 nginx
钉钉获取用户token返回的body为空json对象,可能有以下几种情况
钉钉获取用户token返回的body为空json对象,可能有以下几种情况【1月更文挑战第5天】【1月更文挑战第25篇】
41 5
|
19天前
|
存储 JSON 安全
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
【C++ JSON库 json值的创建手段】深入探究C++中JSON对象定位与操作:从引用到回调函数
79 0
|
19天前
|
JSON JavaScript 数据格式
JS 将 json 对象转成字符串并保留格式 - JSON.stringify()
JS 将 json 对象转成字符串并保留格式 - JSON.stringify()
70 0
|
17天前
|
JSON NoSQL MongoDB
实时计算 Flink版产品使用合集之要将收集到的 MongoDB 数据映射成 JSON 对象而非按字段分割,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
17天前
|
JSON 前端开发 JavaScript
前端 JS 经典:JSON 对象
前端 JS 经典:JSON 对象
19 0
|
17天前
|
JSON JavaScript 前端开发
js将json字符串还原为json对象
【5月更文挑战第14天】js将json字符串还原为json对象
45 1
|
19天前
|
JSON 数据格式
JSON对象相互转换
JSON对象相互转换
16 3
|
19天前
|
JSON Java 数据处理
Spring Boot与Jsonson对象:灵活的JSON操作实战
【4月更文挑战第28天】在现代Web应用开发中,JSON数据格式的处理至关重要。假设 "Jsonson" 代表一个类似于Jackson的库,这样的工具在Spring Boot中用于处理JSON。本篇博客将介绍Spring Boot中处理JSON数据的基本概念,并通过实际例子展示如何使用类似Jackson的工具进行数据处理。
34 0
|
19天前
|
JSON JavaScript 前端开发
什么是json?json可以存放在哪几种数据类型?在什么时候用?
什么是json?json可以存放在哪几种数据类型?在什么时候用?