`

hive distinct 两个字段注意的问题

    博客分类:
  • hive
 
阅读更多
在Hive的是用中,我们经常会有这种需求:
按照同一个id进行Group By,然后对另一个字段去重,例如下面得数据:
id pic
1 1.jpg
2 2.jpg
1 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。
分享到:
评论

相关推荐

    Hive SQL 编译过程详解

    而对于多个Distinct字段,可以通过两种方法实现:一是使用Hash去重,这在内存中进行;二是通过生成多行数据,利用MapReduce的排序特性,减少内存消耗,但增加shuffle数据量。 2. SQL转化为MapReduce的过程: - **...

    HiveSQL解析原理.docx

    在Hive中,实现两个表的Join操作通常涉及到以下步骤: - 在Map阶段,为来自不同表的数据打上标记(tag),这些标记会被添加到Map输出的Value中。 - 在Reduce阶段,根据标记来判断数据来源并进行相应的Join操作。 ...

    hive相关练习的数据data.rar

    在实际的Hive练习中,我们通常会创建两个对应的Hive表来存储这些数据。例如,我们可以创建一个名为`video_info`的表来存储视频信息,字段可能包括视频ID、标题、作者、上传时间、观看次数等;另一个名为`user_info`...

    工作总结hive优化

    通过对Hive及其底层Hadoop的理解,结合实际案例分析,我们可以看到Hive优化是一个综合性的工作,涉及模型设计、查询优化、配置调整等多个方面。只有综合考虑各种因素,才能最大程度地发挥Hive的能力,提高大数据处理...

    Hive仓库的表要同步到Kylin中

    Apache Hive 和 Apache Kylin 是两个广泛应用于大数据领域的工具。其中,Hive 主要用于进行数据仓库管理,而Kylin则专注于提供高效的OLAP(在线分析处理)服务。为了更好地利用Kylin的强大查询性能,通常需要将Hive...

    基于Facebook的Hive开发

    这段代码展示了如何创建一个名为`src`的表,该表包含两个字段:`key`和`value`,均使用字符串类型。此外,还指定了分区字段`ds`以及存储位置`/hive/src`,并选择以文本文件的方式存储数据。 ##### 查询表 ```sql ...

    Hive高级编程

    MapReduce 是一种分布式计算模型,它将复杂的、大规模的数据集的处理任务分解为两个阶段:Map 和 Reduce。 - **Map 阶段**:负责对输入数据进行处理并产生中间结果。每个 Map 任务只处理输入数据的一部分。 - **...

    hive的优化

    这种方式虽然简单,但会执行两个独立的查询。 - **方法2**:使用LEFT OUTER JOIN,并通过CASE WHEN语句处理NULL值。这种方法只需要一个JOB,效率更高。 ```sql SELECT * FROM loga LEFT OUTER JOIN bmw_users b...

    2024年最新,Hive SQL经典面试题,大数据SQL经典面试题

    除了以上两个问题外,面试者还可能遇到其他常见的Hive SQL问题,如Top N问题、Explode问题以及行转列问题。 - **Top N问题**: 主要是找出某个表中的前N项记录。 - **Explode问题**: 处理多值字段,将其展开成多行...

    高频HIVE-SQL笔试题详解(一).docx

    这两个问题都考察了对窗口函数lead、lag的掌握能力。为了解决这些问题,我们首先构建了一个临时表active,以供测试和说明。 问题一:连续出勤3天及以上的用户数 为了解决这个问题,我们可以使用窗口函数lag获取每...

    impala单机部署手册

    查询执行 Impala 分为 frontend 和 backend 两个层次,frontend 用 Java 实现(通过 JNI 嵌入 Impalad),负责查询计划生成,而 backend 用 C++ 实现,负责查询执行。Frontend 生成查询计划分为两个阶段: 1. 生成...

    大数据技术基础实验报告-pig的安装配置与应用.doc

    - 步骤包括:使用`GROUP BY`对课程分组,然后对每个组内的成绩进行排序,使用`LIMIT`选取前两名,最后使用`FLATTEN`展开结果。 在实际的大数据处理中,Pig允许用户以声明性的方式编写复杂的处理逻辑,简化了数据...

    hadoop 开发规范

    - `UNIONTYPE, T2, ...>`: 存储联合类型,即一个字段只能为其中一个类型 **使用举例**: ```sql CREATE TABLE complex_example ( array_col ARRAY, map_col MAP, INT>, struct_col STRUCT, name: STRING>, ...

    深圳校区大数据技术之企业真题V1.1.0.doc

    7. **Count Distinct 和 GroupBy**:Count Distinct计算的是唯一值的数量,可能会将所有数据发送到一个reducer进行处理。而GroupBy是对数据按指定字段分组并进行聚合操作。 8. **MapJoin**:MapJoin在小表完全加载...

    PV、UV的几种写法

    在数据分析和网站流量统计中,PV(Page View)和UV(Unique Visitor)是两个非常重要的概念。PV代表页面浏览量,即用户每打开一个页面就被计数一次;而UV则表示独立访客数,指的是不重复的访问者数量。本文将讨论...

    01-2022年北京大数据面试题汇总.pdf

    - 对于特定场景(如热门视频UV统计),可以考虑使用Random Key技术或者Split Distinct来分散热点数据的压力。底层原理主要是通过随机化手段让数据均匀分布,降低单一Key的负担。 4. **状态管理**: - 常见的状态...

Global site tag (gtag.js) - Google Analytics