zoukankan      html  css  js  c++  java
  • 列转行以及Lateral view (侧写表)的用法

    1)列转行及相关函数说明:

    Split(str, separator):将字符串按照后面的分隔符切割,转换成字符array。
    EXPLODE(col):将hive一列中复杂的array或者map结构拆分成多行。

    2)语法

    lateral view udtf(expression)  table_name_tmp as column_name_tmp
    

    解释:lateral view用于和split, explode等UDTF一起使用,它能够将一行数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。
    lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表

    3)用法

    3.1 准备数据

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

    3.2需求

    将以上数据转换为以上格式
    《疑犯追踪》 悬疑
    《疑犯追踪》 动作
    《疑犯追踪》 科幻
    《疑犯追踪》 剧情
    《Lie to me》 悬疑
    《Lie to me》 警匪
    《Lie to me》 动作
    《Lie to me》 心理
    《Lie to me》 剧情
    《战狼2》 战争
    《战狼2》 动作
    《战狼2》 灾难

    3.3建表语句

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

    3.4查询语句

    SELECT movie,category_name 
    FROM movie_info 
    lateral VIEW
    explode(split(category,",")) movie_info_tmp  AS category_name ;
    
  • 相关阅读:
    python 性能测试
    python calendar
    python datetime
    Zookeeper的功能以及工作原理
    ADB 源码分析(一) ——ADB模块简述【转】
    ADB模块源码分析(二)——adb server的启动
    C/C++中的预编译指令
    开启andriod手机的adbd,进行无线adb调试
    adb和adbd详尽分析
    adb client, adb server, adbd原理浅析(附带我的操作过程)
  • 原文地址:https://www.cnblogs.com/traveller-hzq/p/14471437.html
Copyright © 2011-2022 走看看