Hive:从一列的不同值中随机 select N 个值
Hive: randomly select N values from distinct values of one column
假设我有这样一个数据集
|-----------------|----------------|
| ID | Values |
|-----------------|----------------|
| 123 | aaaa |
|-----------------|----------------|
| 234 | bbb |
|-----------------|----------------|
| 123 | ab3d |
|-----------------|----------------|
| 264 | 34g3ff |
|-----------------|----------------|
| 783 | 341g5h |
|-----------------|----------------|
| 921 | 7jdfew |
|-----------------|----------------|
| 264 | 53fj |
|-----------------|----------------|
我想从不同的 ID 值中随机 select,比如 3 个值。一种可能是得到这样的 table
|-----------------|----------------|
| ID | Values |
|-----------------|----------------|
| 123 | aaaa |
|-----------------|----------------|
| 123 | ab3d |
|-----------------|----------------|
| 783 | 341g5h |
|-----------------|----------------|
| 921 | 7jdfew |
|-----------------|----------------|
我应该如何在 Hive 中执行此操作?
这是一个使用连接的选项 rand()
:
select id, values
from mytable t
inner join (select distinct id from mytable order by rand() limit 3) i on i.id = t.id
子查询随机选取3id
,然后外层查询带上所有相关行。
假设我有这样一个数据集
|-----------------|----------------|
| ID | Values |
|-----------------|----------------|
| 123 | aaaa |
|-----------------|----------------|
| 234 | bbb |
|-----------------|----------------|
| 123 | ab3d |
|-----------------|----------------|
| 264 | 34g3ff |
|-----------------|----------------|
| 783 | 341g5h |
|-----------------|----------------|
| 921 | 7jdfew |
|-----------------|----------------|
| 264 | 53fj |
|-----------------|----------------|
我想从不同的 ID 值中随机 select,比如 3 个值。一种可能是得到这样的 table
|-----------------|----------------|
| ID | Values |
|-----------------|----------------|
| 123 | aaaa |
|-----------------|----------------|
| 123 | ab3d |
|-----------------|----------------|
| 783 | 341g5h |
|-----------------|----------------|
| 921 | 7jdfew |
|-----------------|----------------|
我应该如何在 Hive 中执行此操作?
这是一个使用连接的选项 rand()
:
select id, values
from mytable t
inner join (select distinct id from mytable order by rand() limit 3) i on i.id = t.id
子查询随机选取3id
,然后外层查询带上所有相关行。