zoukankan      html  css  js  c++  java
  • hive 学习笔记——表的入门操作和命令

    1、受控表(managed table)包括内部表、分区表、桶表;

    1.1、分区表

    创建分区表:

    create table banji(id INT,name STRING) partitioned by(grade INT) row format delimited fields terminated by '	';
    create table member(id INT,name STRING) partitioned by(year INT,month INT) row format delimited fields terminated by '	';

    为分区表加载数据

    load data local inpath 'student1' into table banji partition(grade=1);
    load data local inpath 'student1' into table banji partition(year=2014,month=1);

    *分区字段在文件中是没有的,但是查询是显示出来的,分区字段是作为虚拟列存在的

    分区不是越多越好,需要对分区数量进行限制(分区过多,会产生过多的小文件)

    分区字段:查询比较频繁 ,并且不会有很多枚举值的字段适合作为分区字段

    1.2、桶表(bucket table)

    桶就是那个模的数字

    优点:每个桶的数据量差不多,在进行表连接查询的的时候方便

    缺点:按业务字段查的时候没效果

    应用场景:抽样、表连接

    创建桶表

    create table bucket(id INT,name STRING) clustered by(id) into 3 buckets;

    启用桶表

    SET hive.enforce.bucketing=true;
    

      

    添加数据

    insert overwrite table bucket select id ,name from banji;

    *不能用load方式,load方式是简单的复制进hive表,insert的时候,会通过mr处理分桶

    2、非受控表指外部表

    删除表的时候只删除了表定义,不会对HDFS中的数据进行删除

    创建外部表

    create external table ext_table(c1 STRING,c2 STRING) row format delimited fields terminated by ' ' location '/ext_data';

    3、命令行工具

    3.1、set命令可以设置变量也可以显示变量

    3.2、设置启动初始化命令

    *hive启动时会默认执行home下的.hiverc文件,该文件位于home目录下

    set hive.cli.print.current.db=true ;
    #打印当前数据库名
    set hive.cli.print.header=true;
    #打印标题行
    set hive.querylog.location=logpath;
    #设置hive的查询日志保存地址
    

      

    3.2、在不进入hive的命令行的情况下执行hvie命令

    hive -e "hive命令"
    hive -e "">>aaa
    #结果追加到aaa文件中
    hive -S -e "">>bbb
    #输出较少日志
    

       

    3.3、指定hive执行日志存放地址

    hive --hiveconf hive.querylog.location=logpath
    

      

    3.4、执行文件中的hive脚本

    hive -f file

    在hive命令行时执行:

    source file
    
  • 相关阅读:
    ECMAScript2017之async function
    ES3之closure ( 闭包 )
    RxJS之AsyncSubject
    RxJS之BehaviorSubject
    RxJS之Subject主题 ( Angular环境 )
    RxJS之工具操作符 ( Angular环境 )
    RxJS之转化操作符 ( Angular环境 )
    RxJS之过滤操作符 ( Angular环境 )
    RxJS之组合操作符 ( Angular环境 )
    关于Qt的StyleSheet作用范围
  • 原文地址:https://www.cnblogs.com/hpuCode/p/5204309.html
Copyright © 2011-2022 走看看