hadoop - Hive:从大表创建小表

标签 hadoop hive

我目前有一个包含 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/

相关文章:

view - hive 侧 View ,带有带有1列作为阵列的 hive 表的示例示例

hadoop - Apache 麒麟 : Intermediate table not found

hadoop - 从Amazon HBase读取数据

regex - Hive 正则表达式将字符串拆分为两个不同的字段

hadoop - hive 性能

sql - 在Hive上使用索引

hadoop - 可以使用XML创建Hive表,但查询时出现错误

hadoop - Hadoop 中的 InputSplit 自定义

hadoop - Hive中set语句中的值范围

r - Windows 上的 SparkR - Spark SQL 不是使用 Hive 支持构建的