我目前有一个包含 15 亿行的 Hive 表。我想创建一个较小的表(使用相同的表模式),其中包含来自原始表的大约 100 万行。理想情况下,新行将从原始表中随机采样,但获取原始表的顶部 1M 或底部 1M 也可以。我该怎么做?
最佳答案
作为climbage早先建议,您可能最好使用 Hive 的 built-in sampling methods .
INSERT OVERWRITE TABLE my_table_sample
SELECT * FROM my_table
TABLESAMPLE (1m ROWS) t;
此语法为 introduced in Hive 0.11 .如果您运行的是旧版本的 Hive,您将只能使用像这样的 PERCENT
语法。
INSERT OVERWRITE TABLE my_table_sample
SELECT * FROM my_table
TABLESAMPLE (1 PERCENT) t;
您可以更改百分比以满足您特定的样本量要求。
关于hadoop - Hive:从大表创建小表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17117967/