我正在尝试将数据复制到 AWS Lambda 上的雪花中。我现在遇到的情况是,我的数据帧中没有重复项。我通过检查我的数据框来验证这一点,如下所示:
df.duplicated().any()
并验证它是否返回False
然后,我通过过滤数据框中的唯一值来进行双重检查
df[df["myColumn"] == "uniqueValue"]
,我得到 1 个结果。
然后我运行以下命令:
write_pandas(
conn=con,
df=df,
table_name=table_name,
database=database,
schema=schema,
chunk_size=chunk_size,
quote_identifiers=False,
)
然后当数据到达 Snowflake 表并查询它时,SF 数据库中每行有 5 个。
我验证了这个函数也只运行一次。
为什么我得到 5 个重复项?
编辑 好的,所以我意识到它与这个包无关。问题是 1 分钟后 lambda 再次被触发,然后 1 分钟后再次触发,依此类推,直到被触发 5 次。
不知道为什么它会被多次触发,因为所有执行最终都会成功,但在第一个执行实际完成之前有 5 个正在运行
更新
已验证不是内存问题,也不是超时问题。
我注意到,当进行 API 调用来检索某些外部数据时,似乎会触发下一个 lambda。不知道为什么这会起作用,但它似乎正在影响它。
此外,它没有设置为 5 次,它只会每分钟重新触发一次,直到第一个 lambda 执行完成。我可以看到日志在 API 调用开始时停止,并且在同一日志标记处我看到下一个 lambda 执行开始。
我不确定这是否是 Jenkins 特定的问题,但我发现我正在同步调用该函数,1 分钟后,如果 lambda 没有响应,那么它会再次触发它......运行使用
invoke-async
cli 选项而不是 invoke
会导致重复停止。