的唯一方法是,以填补回你的整个表。根据您的表的大小,你可以在一个简单的
SELECT * FROM mytable;
查询您的表因超时有问题。由于分区键在UPDATE
语句中是必需的,因此您必须找到一种方法将分区键从该表中移出。
这是使用TOKEN函数的完美场景。假设你做了功课并且没有任何太宽的分区,可以通过将所有数据集分割成多个分区来扫描所有数据集。您的范围取决于您的数据有多宽。从一般的角度来看,您需要:
SELECT __partition_key_columns__ FROM mytable WHERE
TOKEN(__partition_key_columns__) >= min_range AND
TOKEN(__partition_key_columns__) < max_range;
和min_range
和max_range
去从-2^63到2^64-1(IIRC,使用Murmur3)在推测的窗口大小的步骤W¯¯ :
SELECT __partition_key_columns__ FROM mytable WHERE TOKEN(__partition_key_columns__) >= -2^63 AND TOKEN(__partition_key_columns__) < -2^63 + W;
SELECT __partition_key_columns__ FROM mytable WHERE TOKEN(__partition_key_columns__) >= -2^63 + W AND TOKEN(__partition_key_columns__) < -2^63 + 2*W;
...
直到你覆盖所有范围达2^64-1。如果超时,请将W更小,然后重试。如果你不这样做,那么扩大你的窗口W,这样你就可以加快这个过程。您将能够提取所有分区以发布每个范围的更新。
编辑:This blog post准确地解释如何执行这样的任务。
你是否正确地检查了它?你应该得到* null *而不是* false *。 – xmas79