HIVE中的LIMIT条款真的是随机的吗?
该文件中HIVE
指出,LIMIT
条款returnsrows chosen at random
。我一直在一个SELECT
表上运行一个表,该表中的800,000
记录多于LIMIT
1,但是它总是返回相同的记录。
我正在使用Shark
发行版,我想知道这是否与这种意外行为有关?任何想法将不胜感激。
谢谢,Visakh
回答:
即使文档指出它随机返回行,但实际上并非如此。
它返回“随机选择的行”,因为它出现在数据库中而没有任何where / order
by子句。这意味着它并不是真正的随机(或随机选择),只是无法确定返回行的顺序。
一旦在上面拍了order by x DESC limit 5
一下,它就会返回您从中选择的内容的最后5行。
要使行随机返回,您需要使用类似以下内容的代码: order by rand() LIMIT 1
但是,如果索引设置不正确,可能会对速度产生影响。通常,我做一个最小/最大来获取表上的ID,然后在它们之间做一个随机数,然后选择那些记录(在您的情况下,将是1条记录),这往往比数据库要快。工作,尤其是在大型数据集上
以上是 HIVE中的LIMIT条款真的是随机的吗? 的全部内容, 来源链接: utcz.com/qa/402737.html