在这种情况下,我创建了一个包含100行的配置单元表“test”。
当我启动 hive 终端并输入以下SQL
select * from test tablesample(2 percent);
create table sample as select * from test tablesample(2 percent);
最佳答案
Documentation表示TABLESAMPLE (n PERCENT)
将允许Hive至少获取n%数据大小的数据(请注意,它不一定意味着行数)作为输入。如果我们无法对其进行采样,则MapReduce作业的输入将是整个表/分区。我们在HDFS块级别执行此操作,以便采样粒度为块大小。例如,如果块大小为256MB,即使n%的输入大小仅为100MB,您也会获得256MB的数据。
不幸的是,它不能保证每次获取相同的块时,row_count的总数可能会有所不同。
我建议增加百分比并添加limit n
以确保返回n行。或者只是使用limit n
:
select * from test tablesample(5 percent) limit 100; --may perform faster
select * from test limit 100;
https://stackoverflow.com/questions/55179754/