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中运行)

  • 相关阅读:
    Python基础__字符串拼接、格式化输出与复制
    Python基础__Python序列基本类型及其操作(1)
    Selenium 元素等待
    Selenium 键盘鼠标实践
    Selenium 元素定位
    Selenium 启动浏览器
    Selenium Webdriver概述
    linux虚拟机安装和xshell远程连接
    python实现dubbo接口的调用
    Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
  • 原文地址:https://www.cnblogs.com/LHWorldBlog/p/8284531.html
Copyright © 2011-2022 走看看