将s3数据加载到aurora mysql示例中

oxalkeyp  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(420)

我正在尝试将s3中的数据加载到aurora mysql示例中。我用pyspark做的,它的性能是每小时4GB。

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 ',';

通过这种方式,它每小时向mysql加载5gb。
我有将近2 tb的数据需要加载到mysql示例中。有没有什么方法可以更快地加载数据。

aemubtdh

aemubtdh1#

一些随意的想法;我希望有人能帮上忙:
增加两侧分配的iops(如果你能得到一些指标,你就可以决定哪一方需要更多。)
是什么 s3://... --听起来像是进入了一个远程文件系统?有多遥远?
如果它相当遥远,可以考虑将文件压缩并复制到更近的位置,然后解压缩(因为 LOAD 没有解压缩选项)。
远程。。。也许你的网络带宽有限?
运行 LOADs 同时进行。有多少?很难说。可能一端的iops是限制因素。
表上的索引数量是否“过多”?这可能会减慢速度 LOAD . 删除索引可以加快 LOAD ,但以后需要重新添加索引。要点是去掉不需要的索引。
已将源文件排序 PRIMARY KEY 秩序会加快的 LOAD (假设目标模式已经定义了pk,它应该这样做)。当然,对文件进行预排序需要时间,因此需要权衡。

相关问题