• Hive集合函数 collect_set 和 collect_list 使用示例


    Hive集合函数 collect_set 和 collect_list 使用示例
    Hive中, collect_set 和 collect_list 是用于收集数据并将其存储为集合的聚合
    函数。以下是它们的语法:

    1. collect_set(expression)
    	-  expression : 要收集的数据表达式。
    	collect_set 函数用于将指定列中的唯一值收集到一个集合中,并去除重复值。
    2.  collect_list(expression)
    	-  expression : 要收集的数据表达式。
    	collect_list 函数用于将指定列中的所有值按照顺序收集到一个列表中,保留所有值的顺序。
    
    这两个函数通常用于在聚合查询中收集数据,以便在结果集中以集合的形式表示。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1. 创建student_scores表,向student_scores表中插入数据
    CREATE TABLE student_scores
    (
        id         INT,
        name       STRING,
        score      INT,
        group_name STRING
    );
    INSERT OVERWRITE TABLE student_scores
    VALUES (1, 'Jack', 96, 'A组'),
           (2, 'John', 90, 'A组'),
           (5, 'Lucy', 97, 'A组'),
           (4, 'Caocao', 96, 'B组'),
           (3, 'Lvbu', 99, 'B组');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    2. 使用collect_set函数收集唯一的组名
    SELECT collect_set(group_name) AS unique_groups FROM student_scores;
    
    执行结果:
    ['A组', 'B组']
    
    • 1
    • 2
    • 3
    • 4

    3. 使用collect_list函数将所有学生姓名收集到列表中

    代码如下:

    SELECT collect_list(name) AS all_student_names FROM student_scores;
    
    执行结果:
    ['Jack', 'John', 'Lucy', 'Caocao', 'Lvbu']
    
    • 1
    • 2
    • 3
    • 4
    4. collect_set 和 collect_list 是Hive中用于聚合数据的集合函数,它们在处理数据时有不同的使用场景:
    1. collect_set使用场景
      • 用于获取唯一值: collect_set 函数用于聚合数据并返回唯一值的集合,去除重复的值,适用于需要获取唯一值的场景。
      • 数据去重:当需要对数据进行去重操作时,可以使用 collect_set 函数来确保结果中不包含重复的元素。
      • 统计不同值的个数:通过对数据集合使用 collect_set 函数,可以快速统计不同值的个数,而不关心具体重复值的数量。
    2. collect_list使用场景
      • 保留所有值: collect_list 函数用于聚合数据并返回包含所有值的列表,保留数据集中的所有元素,适用于需要保留所有值的场景。
      • 数据聚合:当需要将数据集中的所有值聚合到一个列表中时,可以使用 collect_list 函数来合并数据,保留所有元素。
      • 保留数据顺序: collect_list 保留数据的原始顺序,将数据按照出现顺序聚合到列表中,适用于需要保留数据顺序的情况。

    综上所述, collect_set 适用于获取唯一值和数据去重的场景,而 collect_list 适用于保留所有值和数据聚合的情况。根据具体需求和数据处理目标,选择合适的函数来实现数据的聚合和处理。

  • 相关阅读:
    【每日一读】Joint Unsupervised Learning of Deep Representations and Image Clusters
    前 3 名突然变了,揭秘 7 月编程语言最新排行榜
    内部振荡器、无源晶振、有源晶振有什么区别?
    最新Tuxera NTFS2024破解版mac读写NTFS磁盘工具
    C语言案例-输入任意三个数,按从大到小的顺序输出.
    Java中String转List和List转String四种方法
    C++ 背包问题——多重背包
    Hutool工具包导入excel文件数据到数据库
    2022-2028全球前列腺癌诊断和治疗行业调研及趋势分析报告
    计算机毕业设计SSM办公自动化系统【附源码数据库】
  • 原文地址:https://blog.csdn.net/qq_36382892/article/details/136719504