【问题标题】:Can't find temp table in Redshift after Lambda loader times-outLambda 加载程序超时后在 Redshift 中找不到临时表
【发布时间】:2018-01-16 10:44:44
【问题描述】:

我有一个执行以下操作的 lambda 函数

create table xyz
copy xyz from S3

复制命令运行时间超过 5 分钟,并且 lambda 在 5 分钟后超时。 我们期望在 COPY 完成后看到什么 Redshift。

我希望看到临时表,并且 S3 文件中的所有行都在 xyz 表中,但我根本没有看到临时表。这是正确的行为吗?

谢谢

【问题讨论】:

    标签: aws-lambda amazon-redshift


    【解决方案1】:

    是的,临时表仅在创建它的会话中可见,并在连接关闭时删除。这是一种常见的数据库行为。您可以从不同的连接同时创建具有相同名称的临时表,并且不会发生名称冲突。在您的情况下,最好创建一个常规表,然后在需要时将其删除。

    UPD:我不知道您的 lambda 是如何设置的。如果您甚至没有看到空表,则很有可能 sql 代码在事务中运行,因此整个事情都回滚了。如果函数超时,您仍然不会看到填充的表,因为连接断开。可能问题不在于您的 lambda,而在于您的副本设置,因为 5 分钟以上的副本对于 Redshift 来说非常奇怪。文件大小和集群配置是多少?您可能会尝试将太大的文件放入多个节点集群而不将其分成块。

    【讨论】:

    • 对不起,我的意思是说一张桌子而不是临时表。我了解临时表的行为。谢谢
    • 谢谢亚历克斯,这让我更了解当 Lambda 超时时 Redshift 正在执行查询时会发生什么情况。代码未在事务中运行,例如没有 BEGIN 或 END。我想了解这种行为以解决我们当前的问题,即我们在不同的 lambdas 中有多个 COPY 竞争同一个目标表上的事务,以便将完整的 COPY 过程复制到一个表中,从这个新表中存在记录的目标表中删除,从这个新表插入到目标表并删除临时登台表。
    猜你喜欢
    • 1970-01-01
    • 2017-10-22
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    相关资源
    最近更新 更多