如何减少在 Amazon Redshift 中将 pandas 数据帧写入表的时间

Posted

技术标签:

【中文标题】如何减少在 Amazon Redshift 中将 pandas 数据帧写入表的时间【英文标题】:How to reduce the time to write pandas dataframes as table in Amazon Redshift 【发布时间】:2018-06-18 17:25:18 【问题描述】:

我正在使用这个在 Amazon Redshift 中编写 python pandas 数据框 -

df.to_sql('table_name', redshiftEngine, index = False, if_exists = 'replace' )

虽然我的数据框只有几千行和 50-100 列,但写一张表需要 15-20 分钟。我想知道这是否是 redshift 的正常表现?有什么办法可以优化这个过程,加快写表速度?

【问题讨论】:

【参考方案1】:

更好的方法是使用 pandas 将数据帧存储为 CSV,将其上传到 S3 并使用 COPY 功能加载到 Redshift。这种方法甚至可以轻松处理数亿行。一般来说,Redshift 的写入性能不是很好——它是用来处理大量 ETL 操作(如 COPY)转储的数据负载。

【讨论】:

single insert statement and commit,使用copy 导入数百万行,您将花费几乎相同的时间,加上@rvd 所说的,您甚至可以并行使用menifest 文件选项。

以上是关于如何减少在 Amazon Redshift 中将 pandas 数据帧写入表的时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AMAZON REDSHIFT 中将 userip 转换为整数

如何在 Amazon Redshift 中将列从字符串更改为日期?

无法在 Amazon Redshift 中将时间戳转换为日期

Amazon Redshift 大小增加

如何在 Amazon Redshift 中使用 Hibernate 插入实体

如何从我的 Amazon EC2 实例中连接到 Amazon Redshift 集群