首页 > 解决方案 > 组合小的嵌套/非嵌套 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 的性能,分区也被减少了,但是现在合并小文件是我无法弄清楚的。

如果有人可以帮助我提出任何很棒的想法。谢谢

标签: jsonparquet

解决方案


推荐阅读