在 S3 和 Redshift 之间测试数据
Posted
技术标签:
【中文标题】在 S3 和 Redshift 之间测试数据【英文标题】:Testing data between S3 and Redshift 【发布时间】:2020-07-14 21:52:07 【问题描述】:目前我正在尝试找出一种策略来自动化以下测试场景。数据(csv 文件)已从本地服务器提取到 S3,然后使用胶水转换 (ETL) 到 Redshift
-
比较本地服务器文件和 Amazon S3 (csv) 之间的数据,即比较位于两个差异服务器中的两个文件的全部内容。
比较 Amazon S3 和 Amazon Redshift 之间的数据(在将数据从 S3 提取、转换和加载 (ETL) 到 Redshift 之后)。
请建议是否有任何 SIT 测试框架来测试本地到 AWS 云的迁移。
是否可以使用 python-pycharm 从 s3 和 Redshift 读取数据到 Pandas 数据帧,以便我们可以比较数据帧中的数据?如果是这样,请建议如何读入数据帧。
【问题讨论】:
你在寻找什么样的输出?您是否想查看整行,在该行的某处有一个不同之处?或者您最想知道在两个商店之间添加/删除了哪些主键?数据是否有任何时间戳可用于比较(例如 LastModified 时间)?数据有多大(有多少行,文件有多大)?随意编辑您的问题以添加这些详细信息,而不是通过评论来回答。 【参考方案1】:要从 s3 和 Redshift 读取数据,您可以尝试使用 red-panda
库:https://github.com/jucyai/red-panda。使用这个库,您可以直接从 S3 和 Redshift 获取数据到 pandas.DataFrame
。
rp = RedPanda()
df_s3 = rp.s3_to_df(s3_bucket, s3_key)
df_redshift = rp.redshift_to_df("select * from table_name")
获得两个数据框后,您可以使用df_s3.equals(df_redshift)
来测试相等性。如果它们具有相同的形状和元素,则结果为 True
。在此处查看此方法的 pandas
文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.equals.html。
【讨论】:
以上是关于在 S3 和 Redshift 之间测试数据的主要内容,如果未能解决你的问题,请参考以下文章
Redshift 的 UNLOAD Query 生成的 S3 请求数
为啥 Redshift 和 S3 之间的 AWS 文件大小不同?
Node-Redshift 是不是支持复制命令(查询)将数据从 S3 加载到 Redshift?