mysql - 将 S3 数据加载到 Aurora MySQL 实例中

标签 mysql performance amazon-s3 bulk-load

我正在尝试将 S3 中的数据加载到 Aurora MySQL 实例中。我是使用 PySpark 完成的,其性能为每小时 4 GB。

current_df.write.format('jdbc').options(
            url=url,
            driver=jdbc_driver,
            dbtable=table_name,
            user=username,
            password=password).mode("overwrite").save()

添加了一些性能改进并观察到性能有所提高(每小时 7 GB),但仍然不是那么好。

添加到 JDBC URL 的参数

useServerPrepStmts=false&rewriteBatchedStatements=true

我尝试了另一种方法

LOAD DATA FROM S3 's3://${s3.bucket}/${filename}' INTO TABLE ${TableName} FIELDS TERMINATED BY ',';

通过这种方式,它可以每小时将 5 GB 数据加载到 MySQL 中。

我有将近 2 TB 的数据需要加载到 MySQL 实例中。有什么方法可以更快地加载数据。

最佳答案

一些随意的想法;我希望有些人会有所帮助:

  • 两侧 增加分配的 IOPS。 (如果您可以获得一些指标,您也许可以决定哪一边需要更多。)
  • 什么是 s3://... -- 听起来像是进入远程文件系统?有多远?
  • 如果距离很远,请考虑将文件压缩并复制到更近的地方,然后解压缩(因为 LOAD 没有解压缩选项)。
  • 远程...也许您的网络带宽有限?
  • 并行运行LOADs。多少?这很难说。一端或另一端的 IOPS 可能是限制因素。
  • 您的表中是否有“过多”的索引?这可能会减慢 LOAD。删除索引可以加快 LOAD 的速度,但您需要稍后重新添加索引。要点是摆脱不需要的索引。
  • 源文件已经按PRIMARY KEY 顺序排序将加快LOAD(假设目标模式已经定义了PK,这是应该的)。当然,预排序文件需要时间,因此需要权衡。

关于mysql - 将 S3 数据加载到 Aurora MySQL 实例中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50156288/

相关文章:

amazon-web-services - 写入 S3Object : The file indicated by the FilePath property does not exist

mysql - JOIN 表未显示结果

MySQL 语句 - 添加另一个条件

c# - 一个窗口中有 25 个 WPF 日历,打开窗口需要 5 秒

performance - Azure 队列延迟消息

.net - 我可以(并且我曾经想要)在.net 中设置最大堆大小吗?

hadoop - 如何使用hive实现预期输出

file - 将大图像上传到 s3 时 Elastic Beanstalk 超时

mysql - 比较不同列时获得最低值

php - 获取连接中的下一条和上一条记录