• Hive_列转行(集合/数组转多行)


    1.函数说明

    EXPLODE(col):

      explode(col)接受一个数组(或一个map)作为输入,并将数组元素(map)作为单独的行输出。 UDTF可以在SELECT表达式列表中使用,也可以作为LATERAL VIEW的一部分使用。

    LATERAL VIEW:

    用在FROM语句后:LATERAL VIEW udtf(expression) tableAlias AS columnAlias

    解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

    2.数据准备

    movie

    category

    《疑犯追踪》

    悬疑,动作,科幻,剧情

    《Lie to me》

    悬疑,警匪,动作,心理,剧情

    《战狼2》

    战争,动作,灾难

    需求

    将电影分类中的数组数据展开。结果如下:

    《疑犯追踪》      悬疑
    《疑犯追踪》      动作
    《疑犯追踪》      科幻
    《疑犯追踪》      剧情
    《Lie to me》   悬疑
    《Lie to me》   警匪
    《Lie to me》   动作
    《Lie to me》   心理
    《Lie to me》   剧情
    《战狼2》        战争
    《战狼2》        动作
    《战狼2》        灾难

    4.创建本地movie.txt,导入数据

    [hadoop@hadoop102 datas]$ vi movie.txt
    《疑犯追踪》    悬疑,动作,科幻,剧情
    《Lie to me》    悬疑,警匪,动作,心理,剧情
    《战狼2》    战争,动作,灾难

    5.创建hive表并导入数据

    create table movie_info(
        movie string, 
        category array<string>) 
    row format delimited fields terminated by "	"
    collection items terminated by ",";
    load data local inpath "/opt/module/datas/movie.txt" into table movie_info;

    6.按需求查询数据

    select
        movie
        category_temp
    from 
        movie_info    
        LATERAL VIEW explode(category) emp_temp AS category_temp
    学习中,博客都是自己学习用的笔记,持续更新改正。。。
  • 相关阅读:
    QGhappy小组第三次作业第四天会议完成情况
    DeepLearning 学习资料
    matrix derivatives
    back propogation 的线代描述
    Tag recommendaion... 论文中的小例子,使用HOSVD算法推荐
    funk_SVD 个人理解
    PCA 学习笔记
    《机器学习实战》6.2小节,KKT条件代码理解
    KNN算法python实现
    vimrc 我的专属vim配置
  • 原文地址:https://www.cnblogs.com/Tunan-Ki/p/11802667.html
Copyright © 2020-2023  润新知