由于流表不会立即更新表元数据。碰巧表没有有效的元数据(特别是对于较小的表)。反过来,这会在使用表通配符函数时产生问题(因为它们与表元数据相关)。 为了克服这个问题,我正在寻找一种强制更新表元数据的方法。我有什么工作可以做到这一点吗? 感谢
答案 0 :(得分:3)
简短的回答是否定的。流式传输系统以不同的存储格式/系统缓冲流式数据,而不是通常存储的数据。我们定期将缓冲的数据刷新到传统的存储系统中,此时您感兴趣的表元数据将更新为刷新的数据块。
此行为的原因在于,在主动流式传输系统中,这些统计信息可能会不断变化,因此将不准确。由于流式摄取服务是分布式系统,获取有关缓冲数据的准确统计信息的唯一方法是扫描缓冲区并计算更新统计信息(在响应时可能不正确/陈旧返回,也将是非常昂贵的)。我们选择将这些统计数据与"刷新"用于保持元数据值稳定的数据,以及避免昂贵的缓冲区扫描返回在返回时可能不正确的数据。
我们在表元数据中有一个名为" streamingBuffer"的部分,它提供行/字节的估计值,以及一些时序统计信息。
我从你的问题中看到你实际上正在使用表通配符中的信息(我假设你的意思是TABLE_QUERY?)。我将在内部提交一个错误,以便在表查询可用的字段中包含来自streamingBuffer部分的估计数据。