【问题标题】:What is the best way to read multiple json files in a S3 directory and then load them to a MySQL table?读取 S3 目录中的多个 json 文件然后将它们加载到 MySQL 表的最佳方法是什么?
【发布时间】:2019-07-23 12:20:52
【问题描述】:

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

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

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

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

尝试使用 'obj.get()['Body'].read()'(在 python 中)之类的东西通过 boto3 读取每个 json 文件,但是,对所有文件的迭代需要我几个小时才能运行。

【问题讨论】:

    标签: python json amazon-web-services amazon-s3 etl


    【解决方案1】:

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

    如果您正在运行 Amazon Aurora,您可以Load Data into an Amazon Aurora MySQL DB Cluster from Text Files in an Amazon S3 Bucket

    如果是普通的MySQL,可以Load S3 Data into Amazon RDS MySQL Table with AWS Data Pipeline

    【讨论】:

    • 感谢您的建议!将注册一个免费等级帐户以进行尝试。
    【解决方案2】:

    如果 (1) 您有兴趣将数据转换为表格格式,并且 (2) 熟悉 python,一旦您阅读了 json 文件(使用 boto3aws-data-wrangler),您可以做一些事情喜欢:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2016-10-03
      • 2020-09-01
      相关资源
      最近更新 更多