我有一个包含 40k++ json 文件的 S3 文件夹,其中每个文件都具有以下格式:
[{"AAA": "XXXX", "BBB": "XXXX", "CCC": "XXXX"}]
我的目的是读取这些 json 文件(在一个 S3 文件夹中),将它们组合成一个结构化表,也许是为了执行一些数据转换,然后将它们加载到 MySQL 表中。此过程可能需要每周运行一次。
有没有更快的方法对这种数据源进行 ETL?如果您有任何可行的建议,我将不胜感激。非常感谢!
尝试通过 boto3 使用类似
'obj.get()['Body'].read()'
(在 python 中)的内容读取每个 json 文件,但是,所有文件的迭代花了我几个小时才能运行。
您可以使用 Amazon Athena 读取 JSON 文件,执行 ETL 并将数据输出为 CSV(或其他)格式。它可以读取多个文件、理解 JSON 并执行正常的 SQL 操作。
如果您正在运行 Amazon Aurora,您可以 将数据从 Amazon S3 存储桶中的文本文件加载到 Amazon Aurora MySQL 数据库集群。
如果是普通MySQL,您可以使用AWS Data Pipeline将S3数据加载到Amazon RDS MySQL表中。
如果 (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)。有关如何完成此步骤的更多详细信息此处
您几乎没有什么选择可以帮助您:
如果您确实需要 MySql 数据库,glue 将是不错的选择,但是,并不总是需要关系数据库。评估您的需求时要小心。