我有几个配置单元表是从spark和hive插入的。这些表格也可由presto上的分析师访问。很自然,我们会遇到一些时间窗口,用户会碰到一个不完整的数据集,因为presto忽略了锁。
我能想到的选择是:
叉起presto hive连接器,以适当地支持hive s和x锁。这不算太糟,但要做的很费时。
插入覆盖完成后,交换配置单元元存储上的表位置。这是可以的,但有点混乱,因为我们喜欢在数据库级别存储显式位置,并让表继承位置。
停止对这些表执行insert overwrite,而只需为已更改的内容添加一个新分区,然后在写入一个新分区后,更改配置单元表以查看它。然后我们就可以在数据的顶部有一些视图,这些视图将正确地协调每一行的最新版本。
停止在s3上执行insert覆盖,因为s3有一个很长的从配置单元转移到目标表的复制窗口。如果我们转移到hdfs进行所有插入覆盖,我们仍然有这个问题,但这是在一段时间内,它需要做一个hdfs mv,这是显着更快(可能不好:仍然有一个窗口,我们可以得到不完整的数据)
我的问题是人们通常是如何处理的?这似乎是一个常见的场景,将有一个明确的解决方案,但我似乎错过了它。对于任何可以查询配置单元元存储并直接与hdfs/s3交互而不考虑配置单元锁的第三方工具,通常都会要求这样做。
暂无答案!
目前还没有任何答案,快来回答吧!