Hive中Group By的去重
Jun 07, 2016 pm 04:37 PM在Hive的是用中,我们经常会有这种需求: 按照同一个id进行Group By,然后对另一个字段去重,例如下面得数据: id pic1.jpg2.jpg1.jpg 此时,是用DISTINCT或者2 col得Group By都是不行得,我们可以用这个UDAF:collect_set(col),它将对同一个group by 得ke
在Hive的是用中,我们经常会有这种需求:
按照同一个id进行Group By,然后对另一个字段去重,例如下面得数据:
id pic 1.jpg 2.jpg 1.jpg
此时,是用DISTINCT或者2 col得Group By都是不行得,我们可以用这个UDAF:collect_set(col),它将对同一个group by 得key进行set去重后,转换为一个array。
再举一个例子,我们可以对pic进行去重,拼接:
SELECT id, CONCAT_WS(',', COLLECT_SET(pic)) FROM tbl GROUP BY id
在这里CONCAT_WS是UDF,COLLECT_SET是UDAF,它将group后的pic去重,并转换为了array,方便udf是用。
PS:如果不需要去重,可以使用COLLECT_LIST。
更多UDAF,见这里 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
原文地址:Hive中Group By的去重, 感谢原作者分享。

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Mendedahkan kaedah penduaan data yang cekap dalam Pandas: Petua untuk mengalih keluar data pendua dengan cepat

Bagaimana untuk membuang pendua dalam perkataan

Bagaimana untuk mengoptimumkan prestasi pengisihan dan penyahduplikasian koleksi dalam pembangunan Java

Apakah kaedah untuk membuang pendua dalam panda?

Bagaimana untuk melaksanakan operasi penyahduplikasian selepas tatasusunan PHP dikocok?

Gunakan bahasa Hive in Go untuk melaksanakan gudang data yang cekap

Bagaimana untuk mencapai penyahduplikasian data dalam tatasusunan PHP?

PHP melaksanakan platform analisis data besar Hive sumber terbuka
