【问题标题】:Hive: random select different size of samples from group byHive:从分组中随机选择不同大小的样本
【发布时间】:2020-09-29 03:20:55
【问题描述】:

是否可以在 Hive 中从 group by 中随机选择不同大小的样本?例如,我有一个这样的表

|-----------------|----------------|
|     ID          |     Value      |
|-----------------|----------------|
|    IKJ12        |    5           |
|-----------------|----------------|
|    IKJ12        |    9           |
|-----------------|----------------|
|    IKJ12        |    10          |
|-----------------|----------------|
|    IKJ09        |    7           |
|-----------------|----------------|
|    IKJ09        |    14          |
|-----------------|----------------|

我想从ID = IKJ12 中随机选择两个样本,从ID = IKJ09 中随机选择一个样本。一种可能是这样的。

|-----------------|----------------|
|     ID          |     Value      |
|-----------------|----------------|
|    IKJ12        |    5           |
|-----------------|----------------|
|    IKJ12        |    10          |
|-----------------|----------------|
|    IKJ09        |    14          |
|-----------------|----------------|

【问题讨论】:

    标签: random group-by hive


    【解决方案1】:

    你能试试这个吗?我没有找到测试它,但我认为你会从中得到想法。
    行号用于为分区中的每个 ID 提供唯一的行号。
    sum 用于获取分区中有多少个元素。

    select id,value
    from 
    (select id,value,
    row_number() over(partition by id order by id) rn
    sum(1) over(partition by id order by id) cnt
    from table 
    )
    where rs.rn<= floor(rand*100)%cnt+1 
    

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 2015-11-27
      • 1970-01-01
      • 2021-01-11
      • 2020-10-28
      • 2018-09-17
      • 2018-11-01
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多