json - 组合小的嵌套/非嵌套 json 文件
问题描述
我正在尝试找到组合多个 1 或 2 kbs 左右的小 json 文件的方法。数据采用 json 文件的形式,该文件具有嵌套或非嵌套形式的多个记录。具有数据的 s3 存储桶具有以下文件夹结构:
mybucket --
|__mainfolder--
|___dateid=2019folder
|___acctid=239828folder
|___testfolder
|__test1folder
|____file1.json
|____file2.json
|__mainfolder--
|___dateid=2019folder
|___acctid=458398folder
|___testfolder
|__test2folder
|____file1.json
|____file2.json
|___test3folder
|__file3.json
|__file4.json
在 s3 存储桶中,我有一个主文件夹,其中包含按 dateid、acctid、testfolder、testfolder 划分的分区。s3 存储桶有一个主文件夹,每个日期都有一个文件夹。如果您进入其中一个日期文件夹,您将看到所有帐户的文件夹各一个。如果您进入任何 accountid 文件夹,您将看到一些性能测试文件夹,其中是实际的 json。如上图所示,在一个测试文件夹中的存储桶结构中,可能有不同种类的 test1folder、test2folder 等,每个都运行不同种类的测试。所有文件大多是个位数的 kb 小,有时有点大。此 s3 数据被带入 hive 中的 athena (presto) ddl 。并且要使用的压缩格式是镶木地板。在我实现 parquet 之前,我想将这些小文件组合成一个大文件,然后使用 parquet 进行压缩。我正在尝试将所有帐户中的所有测试结果 json 文件组合在一起,用于一种类型的测试。所以它将结合大量的小文件。我在 emr 上尝试了 s3distcp,但没有帮助。我不确定我的脚本是否正确。为了提高 athena 的性能,分区也被减少了,但是现在合并小文件是我无法弄清楚的。
如果有人可以帮助我提出任何很棒的想法。谢谢
解决方案
推荐阅读
- django - 如何解耦本地目录和 Heroku 项目
- amazon-web-services - 使用 AWS 存储服务(EBS 或 EFS 或 S3)作为卷或挂载与 Stanalone Docker 容器而不是 ECS 绑定?
- java - 如何将字符串更改为字符
- java - 想要访问具有父类 ID 的子属性
- excel - 如何在循环中向下移动单元格
- bash - 从 git tag --list 'v*' 获取最后一个标签
- node.js - 有没有办法在 NodeJS 文件流中读取和写入同一行?
- php - 从下拉 Laravel 中获取所选值时始终为 NULL
- android - React Native Android 到 iOS 迁移
- java - spring 占位符 - 替换 bean 中的值