首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在S3中查询异构JSON数据?

如何在S3中查询异构JSON数据?
EN

Stack Overflow用户
提问于 2018-05-08 22:16:07
回答 2查看 2.2K关注 0票数 3

我们有一个Amazon桶,它包含大约100万个S3文件,每个文件都压缩了大约500 an。这些文件是放在那里的AWS动态消防软管,和一个新的一个是写每5分钟。这些文件都描述类似的事件,因此在逻辑上都是相同的,并且都是有效的JSON,但是具有不同的结构/层次结构。它们的格式&行尾也是不一致的:一些对象位于单行上,有些位于多行上,有时一个对象的结尾与另一个对象的开始(即}{)位于同一行。

我们需要解析/查询/分解这些对象,然后将结果导入我们的内部数据仓库SQL Server数据库。

亚马逊雅典娜无法处理不一致的间距/结构。我想要创建一个Lambda函数来清理间距,但这仍然留下了不同结构的问题。由于这些文件是由Kinesis建立的,这迫使您将文件按年、月、日和小时嵌套在文件夹中,因此我们必须每年创建数千个分区。雅典娜分区数量的限制并不为人所知,但研究表明,如果我们每小时创建一个分区,我们很快就会用尽这个限制。

我看过先把数据注入Redshift,然后再把它拉下来。外部表可以处理间距问题,但不能处理嵌套JSON,几乎所有这些文件都有嵌套JSON。COPY命令可以处理嵌套的JSON,但要求我们事先了解JSON结构,并且不允许我们访问文件名,这是完全导入所需的(这是获取日期的唯一方法)。通常,Redshift与Athena有相同的问题:不一致的结构使得很难定义模式。

我已经研究过使用像AWS Glue这样的工具,但是它们只是移动数据,它们不能将数据移动到我们的内部服务器中,所以我们必须找到某种中介,这会增加成本、延迟和维护开销。

我尝试删除中间人,并使用ZappySys的S3 JSON任务直接提取文件并将其聚合到SSIS包中,但它无法处理间距问题或不一致的结构。

我不可能是第一个面对这个问题的人,但我只是不停地转。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-09 07:11:18

我可能会提出两种解决方案

  1. 我相信MongoDB/DynamoDB/Cassandra擅长处理异构的JSON结构。我不确定您的JSON中的不一致性,但是只要它是一个有效的JSON,我就认为它应该可以在上面的DBs中被吸收。如果可能的话,请提供一个JSON示例。但这些工具各有优缺点。这些No SQL的数据建模与传统SQL完全不同。
  2. 我不知道为什么你的兰博达不能做一个清理。我相信,当S3在水桶中放置时,您可能会尝试调用Lambda。这应该能够清除JSON,除非涉及到复杂的进程。

除非JSON的格式是正确的,否则没有任何工具能够完美地处理它,我相信比雅典娜或谱更合适,MongoDB/DyanoDB/Cassandra将适合这个用例

如果您能够分享您在创建大量分区时所面临的限制,那就太好了?

票数 2
EN

Stack Overflow用户

发布于 2019-10-22 14:06:49

隆隆声是一个开放源码(Apache2.0)引擎,允许您使用JSONiq查询语言直接查询存储在S3上的JSON (特别是JSON线文件),而不必将其移动到任何其他地方或将其导入任何数据存储。在内部,它使用星火和DataFrames。

它成功地在超过200亿个对象(10+ TB)的集合上进行了测试,如果数据是嵌套的和异构的(缺少字段、额外字段、同一字段中的不同类型等),它也可以无缝工作。它还在亚马逊电子病历集群中进行了测试。

更新:雷布尔也适用于Parquet、CSV、ROOT、AVRO、text和SVM,以及HDFS、S3和Azure。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50243011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档