hadoop - 随机选择HIVE中的行,其中一半必须满足条件

标签 hadoop hive hiveql

现在我有:

SELECT id, name FROM table1
   DISTRIBUTE BY rand()
   SORT BY rand()
   limit 2;

但是我需要添加一个限定语句,以便一半随机检索的行满足指定条件:
WHERE count(id) > 3
GROUP BY name;

而另一半行不满足此条件。但是,我不能让一个子集比另一个子集代表过多,即那些count(id)> 3的子集应该与那些<3的子集相同。我曾考虑使用联合,但认为这是不可能的,因为查询将查询同一张表。我该怎么做呢?提前致谢!

最佳答案

尝试这样的事情:

select
*
from(
select
Src_sys_id
From fin.table
where src_sys_id = "123"
limit 10
union all
select src_sys_id
From fin.table
where src_sys_id <> "123"
limit 10) a;

如果需要,可以将任何其他子句添加到select语句中。只需确保每个select语句返回相同的列数即可使联合工作。

关于hadoop - 随机选择HIVE中的行,其中一半必须满足条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37709972/

相关文章:

hadoop - 映射器函数Hadoop中的MultipleOutputs版本问题

java - 可读字节数不足 - 需要 4 个,最大值为 0

hadoop - 从 Hive 中的最后一个非空值填充空值

hadoop - hive 字符串中的右字符

sql - 使用 UNION ALL 合并 Hive 中的多个表?

image - hadoop 上的并行图像处理

hadoop - 如何在 hive 中使用结构数组

hadoop - 在Hive中使用Join插入数据

hive - 动态分区不能是静态分区的父级 '3'

sql - 如何获取Hive中字符串使用的文本字节?