从Hive表中选择每列的随机行数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Hive表中选择每列的随机行数相关的知识,希望对你有一定的参考价值。
我正在尝试为列hash
的每个不同值检索一个随机行。我还需要dt列。
到目前为止,我到达了这个不起作用的查询:
INSERT OVERWRITE TABLE t PARTITION(dt)
SELECT hash, dt FROM (
SELECT hash, RAND() as r, dt FROM t1
UNION
SELECT hash, RAND() as r, dt FROM t2
) result
WHERE r IN (SELECT MAX(r) FROM result WHERE hash=result.hash);
由于在FROM子句Table not found 'result'
中使用它,查询因FROM result
错误而失败。
如何修复此查询或此处使用的其他方法?
答案
您可以使用row_number
获取由r排序的每个哈希的最大值的行。
INSERT OVERWRITE TABLE t PARTITION(dt)
SELECT hash,dt
FROM (SELECT hash, dt, row_number() over(partition by hash order by r desc) as rnum
FROM (SELECT hash, RAND() as r, dt FROM t1
UNION ALL
SELECT hash, RAND() as r, dt FROM t2
) result
) t
WHERE rnum=1
以上是关于从Hive表中选择每列的随机行数的主要内容,如果未能解决你的问题,请参考以下文章