读取 S3 目录中的多个 json 文件然后将它们加载到 MySQL 表的最佳方法是什么?

问题描述 投票:0回答:3

我有一个包含 40k++ json 文件的 S3 文件夹,其中每个文件都具有以下格式:

[{"AAA": "XXXX", "BBB": "XXXX", "CCC": "XXXX"}]

我的目的是读取这些 json 文件(在一个 S3 文件夹中),将它们组合成一个结构化表,也许是为了执行一些数据转换,然后将它们加载到 MySQL 表中。此过程可能需要每周运行一次。

有没有更快的方法对这种数据源进行 ETL?如果您有任何可行的建议,我将不胜感激。非常感谢!

尝试通过 boto3 使用类似

'obj.get()['Body'].read()'
(在 python 中)的内容读取每个 json 文件,但是,所有文件的迭代花了我几个小时才能运行。

python json amazon-web-services amazon-s3 etl
3个回答
0
投票

您可以使用 Amazon Athena 读取 JSON 文件,执行 ETL 并将数据输出为 CSV(或其他)格式。它可以读取多个文件、理解 JSON 并执行正常的 SQL 操作。

如果您正在运行 Amazon Aurora,您可以 将数据从 Amazon S3 存储桶中的文本文件加载到 Amazon Aurora MySQL 数据库集群

如果是普通MySQL,您可以使用AWS Data Pipeline将S3数据加载到Amazon RDS MySQL表中


0
投票

如果 (1) 您有兴趣将数据转换为表格格式,并且 (2) 熟悉 Python,一旦您阅读了 json 文件(使用

boto3
aws-data-wrangler
),您可以执行以下操作:

path = "s3://" + your_bucket_str + "/" + your_path_str
df = wr.s3.read_json(path=path, dataset=True)

然后使用

mysql.connector
或“pymysql”将数据放入您想要的位置(例如 mysql)。有关如何完成此步骤的更多详细信息此处


0
投票

您几乎没有什么选择可以帮助您:

如果您确实需要 MySql 数据库,glue 将是不错的选择,但是,并不总是需要关系数据库。评估您的需求时要小心。

© www.soinside.com 2019 - 2024. All rights reserved.