AWS Redshift CTAS 查询在集群查询选项卡中完成,但仍从客户端 sql 工作台/j 运行。该表也未创建
Posted
技术标签:
【中文标题】AWS Redshift CTAS 查询在集群查询选项卡中完成,但仍从客户端 sql 工作台/j 运行。该表也未创建【英文标题】:AWS Redshift CTAS query complete in cluster query tab but still running from the client sql workbench/j.The table is also not getting created 【发布时间】:2019-02-05 10:25:09 【问题描述】:我的查询中有一个交叉联接。这是修改后的查询:
create table abc.abcd as with temp1 as
(select
1 as bid, *
from
abc.data_1 ), temp2 as (select
1 as aid, *
from
abc.data_2 b), temp3 as ( select
a.*,
b.*
from temp2 a
join
temp1 b on a.aid=b.bid)
select * from temp3
在redshift查询历史中查询已成功完成,但查询状态仍在sqlworkbench/J中运行。
在查询新创建的表时,我收到一个对象不存在的错误。我正在使用 4 节点 dc2.large 集群。这里可能出了什么问题?
更新 1:如果我正在运行相同的查询,但使用了限制子句,则查询返回的输出很好,并且正在创建表。
这里是使用限制子句的查询:
create table abc.abcd as with temp1 as
(select
1 as bid, *
from
abc.data_1 ), temp2 as (select
1 as aid, *
from
abc.data_2 b), temp3 as ( select
a.*,
b.*
from temp2 a
join
temp1 b on a.aid=b.bid)
select * from temp3 limit 200
【问题讨论】:
您可能在等待时失去了连接?您是否在 sqlworkbench/j 中打开了自动提交,如果没有,那么这可能就是该表现在消失的原因。?见docs.aws.amazon.com/redshift/latest/mgmt/…的第10点 这是我客户端中的 sqlworkbench/J 选项 - imgur.com/XHdJUFj 尝试使用 ec2 实例来运行相同的实例(使用 tmux/screen + psql) - 你应该会发现它工作正常。几乎可以肯定它是由于连接中断造成的。 但是在我的 sqlworkbench/J 客户端中重置连接后,该表应该是可用的,因为在 Redshift 中完成了查询,对吧?更离奇的是,它甚至在客户端都不可用。 @JonScott 我用 EC2 实例再次尝试了同样的事情,它成功了!谢谢你的建议。 【参考方案1】:我创建了一个 EC2 实例并在其上安装了 sqlworkbench/J 并运行了相同的查询,它按预期工作。
我怀疑这是网络问题的原因。查询已提交到集群,但由于网络问题,“自动提交”没有从 sqlworkbench/J 客户端发送到集群。当我在 EC2 实例中运行查询时,甚至我的 RDP 连接也多次中断。所以看起来是网络问题导致了异常行为。
【讨论】:
以上是关于AWS Redshift CTAS 查询在集群查询选项卡中完成,但仍从客户端 sql 工作台/j 运行。该表也未创建的主要内容,如果未能解决你的问题,请参考以下文章