Вот сценарий: таблица record
выглядит следующим образом:Как HQL может ограничить количество записей в каждой группе?
A | B | C
1 | 1 | 1
2 | 1 | 1
3 | 1 | 1
4 | 1 | 2
5 | 1 | 2
6 | 1 | 3
результат HQL: select * from record where B = 1 and C < 3 limit 2
будет:
A | B | C
1 | 1 | 1
2 | 1 | 1
Но то, что я хочу это:
A | B | C
1 | 1 | 1
2 | 1 | 1
4 | 1 | 2
5 | 1 | 2
То есть : Чтобы ограничить количество записей в каждом условии, не ограничивайте окончательное количество возвращенных записей.
Мне это действительно нужно Выполняется только в кусте. Может ли кто-нибудь дать мне представление? Большое спасибо!
Чтобы Резюме Вот хороший способ решить эту проблему: http://ragrawal.wordpress.com/2011/11/18/extract-top-n-records-in-each-group-in-hadoophive/
Возможно, я не передал это право. После тестирования я не думаю, что это может достичь того, чего я хочу. Вы сказали, что **, как строки, которые могли бы пройти оба условия, должны появиться **, это точно как какая-то ** 'группа by', в каждой группе максимальное количество записей должно быть ограничено **. В этом примере, когда (b = 1 и c = 1) должно быть не более 2 записей, и это то же самое (b = 1 и c = 2) – Judking
** PS ** Если я не описал это ясно, обратитесь к http://stackoverflow.com/questions/10421807/how-do-limit-the-number-of-rows-per-field-value-in-sql?rq=1, это решение в MySQL, но я не знаю, как сделать то же самое в hive.Thanks! – Judking
Я думаю, что ссылка - это другая проблема, она хочет первые 2 строки для каждого отдельного значения в столбце 1; и я только что опубликовал решение для этого. – libjack