我有大量的 json 文件,总共 >100TB,每个 json 文件压缩 10GB,每行包含一个 json 对象,它们存储在 s3 上
如果我想将 json 转换为 csv(也存储在 s3 上)以便我可以将它们直接导入到 redshift 中,使用 hadoop 编写自定义代码是唯一的选择吗?
是否可以在不将数据转换为其他格式的情况下对 json 文件进行即席查询(因为我不想在每次需要进行查询时先将它们转换为其他格式,因为源是成长)
最佳答案
最快和最简单的方法是启动一个装有 Hive 的 EMR 集群来完成这项繁重的工作。通过使用 JsonSerde,您可以轻松地将数据转换为 csv 格式。这只需要您将数据从 JSON 格式的表格插入到 CSV 格式的表格中。
可以在此处找到处理 JsonSerde 的一个很好的教程:
http://aws.amazon.com/articles/2855
还有一个很好的用于 CSV 格式的库是:
https://github.com/ogrodnek/csv-serde
EMR 集群可以是短暂的,并且只对一项工作是必需的,它也可以跨越低成本的 spot 实例。
一旦您拥有 CSV 格式,Redshift COPY 文档就足够了。
关于hadoop - 分析 S3 上的大量 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21140726/