• Hive篇--相关概念和使用二


    一.基本概念

    Hive分桶:

    1.概念

    分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。
    对于hive中每一个表分区都可以进一步进行分桶。(可以对列,也可以对表进行分桶)
    由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。

    2.设置

    set hive.enforce.bucketing=true;
    默认:false;设置为true之后,mr运行时会根据bucket的个数自动分配reduce task个数。(用户也可以通过mapred.reduce.tasks自己设置reduce任务个数,但分桶时不推荐使用)
    注意:一次作业产生的桶(文件数量)和reduce task个数一致。

    3.用途

    桶表 抽样查询
    select * from bucket_table tablesample(bucket 1 out of 4 on columns);
    TABLESAMPLE语法:
    TABLESAMPLE(BUCKET x OUT OF y)
    x:表示从哪个bucket开始抽取数据
    y:必须为该表总bucket数的倍数或因子

    4.创建分桶表
    CREATE TABLE psnbucket( id INT, name STRING, age INT)
    CLUSTERED BY (age) INTO 4 BUCKETS
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

    Hive Lateral View概念

    作用:

    Lateral View用于和UDTF函数(explode、split)结合来使用。
    首先通过UDTF函数拆分成多行,再将多行结果组合成一个支持别名的虚拟表。
    主要解决在select使用UDTF做查询过程中,查询只能包含单个UDTF,不能包含其他字段、以及多个UDTF的问题

    语法:


    LATERAL VIEW udtf(expression) tableAlias AS columnAlias (',' columnAlias)

    举例 :

    select count(distinct(myCol1)), count(distinct(myCol2)) from psn2
    LATERAL VIEW explode(likes) myTable1 AS myCol1
    LATERAL VIEW explode(address) myTable2 AS myCol2, myCol3;

    Hive 运行方式
    1.CLI方式:

    1.1 与hdfs交互
            执行执行dfs命令
            例:dfs –ls /

    1.2 与Linux交互
          !开头 例: !pwd

    2.Hive脚本运行方式:

    hive -e ""
    hive -e "">aaa
    hive -S -e "">aaa(简化一些输出比如时间等等)。
    hive -f file
    hive -i /home/my/hive-init.sql
    hive> source file (在hive cli中运行)

  • 相关阅读:
    【转载】数据杂谈
    【转载】行走在网格之间:微博用户关系模型
    【转载】TalkingData首席金融行业专家鲍忠铁:18亿数据解读移动互联网
    【转载】大数据架构和模式
    【转载】Deep Learning(深度学习)学习笔记整理
    【转载】如何组建一支优秀的数据分析团队?
    【转载】Hadoop可视化分析利器之Hue
    【转载】关于烂代码的那些事
    【转载】6个用好大数据的秘诀
    【转载】如何一步步从数据产品菜鸟走到骨干数据产品
  • 原文地址:https://www.cnblogs.com/LHWorldBlog/p/8284531.html
Copyright © 2020-2023  润新知