我安装了TPC-H基准测试。我可以在浏览器中运行这个命令,它运行得很好:
select * from h_customer;
但是,如果我从Linux CLI运行它,它就永远不会返回。
如果我将其修改为更小,它将在CLI:中工作
select * from h_customer limit 10;
回报很好。然后我可以继续:
select * from h_customer limit 100; -- This works.
select * from h_customer limit 1000; -- This hangs.
"历史记录"视图显示服务器获取了"限制为1000"的查询,并正确处理了它。它在一个合理的时间内运行,历史视图显示了正确的1000行。
我可以用其他表和查询来重现这一点。这似乎是客户端的数据量问题。但是返回1000行应该是微不足道的。我希望它能回来更多。
Snowflake直接向客户端发送小的结果集。对于较大的文件,它将客户端引导到结果集缓存以下载一个或多个压缩文件。结果集缓存来自云提供商,而不是直接来自snowflakecomputing.com。
1000行是在两者之间切换的一个阈值,我已经看到非常宽的表用更少的行也能做到这一点。然后,客户端尝试下载S3文件、Azure blob或GCS文件,具体取决于Snowflake的运行位置。某些东西阻止您的Linux客户端下载这些文件。
通常它是一个具有状态数据包检查功能的防火墙,例如Palo Alto或Cisco。他们有时会解密HTTPS流量,并丢弃看起来应该是"雪花计算"但来自AWS、Azure或GCP的数据包。
它也可以是一个代理服务器。由于它是在浏览器中工作的,所以两者获取大型结果集的方式有所不同。浏览器可能配置了代理。您可以为包括SnowSQL在内的所有Snowflake客户端设置代理https://docs.snowflake.com/en/user-guide/snowsql-start.html#using-a代理服务器。
请与您的网络团队联系,看看是否有什么东西从云提供商或雪花计算网站上丢弃了数据包。