zoukankan      html  css  js  c++  java
  • 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中运行)

  • 相关阅读:
    Java之时间处理(当前年的上一年、上一季度、当月、当季)
    Nginx代理之大文件下载失败问题
    PageHelper之排序
    MySQL之集群配置
    Java之判断字符串是否为数字(包含浮点型数据)
    /bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file:
    Error Code: 1153
    413 Request Entity Too Large
    MyBatis分页插件失效问题之解决
    HikariConfig 连接池属性详解
  • 原文地址:https://www.cnblogs.com/LHWorldBlog/p/8284531.html
Copyright © 2011-2022 走看看