zoukankan      html  css  js  c++  java
  • hive读书笔记

    笔记来源《Hive编程指南》

    一、hive命令行界面:

    1. ‘一次使用’命令:执行一个或多个(分号分隔)查询后hive CLI立即退出: hive -e "select * from src"
    2. 从文件中执行hive查询:hive -f /file/hello.hql。 hive shell中可以用SOURCE执行一个脚本文件
    3. hiverc文件:CLI   -i    文件名。这个选项允许用户指定一个文件,CLI启动时,在提示符出现前会先执行这个文件。
    4. 执行shell 命令:不用退出hive CLI,在命令前加上!并且以分号结尾就可以
    5. 在hive内使用hadoop 的dfs命令:去掉hadoop关键字,以分号结尾,eg:dfs -ls /;
    6. hive脚本注释:以--开头来表示 注释 
    7. 显示字段名称:set hive.cli.print.header=true;如果总希望看到字段名称,将此行加到$HOME/.hiverc文件中即可。

    $HOME/.hiverc文件:

    set hive.cli.print.current.db=true;
    set hive.cli.print.header=true;
    set hive.exec.mode.local.auto=true;
    set hive.auto.convert.join=true;
    set hive.optimize.bucketmapjoin=true;
    set hive.optimize.bucketmapjoin.sortedmerge=true;
    set hive.map.aggr=true;

    查看表的字段信息及元数据存储路径  : desc formatted table_name;

    查看建表语句及其他详细信息的方法  : show create table table_name;

    二、数据类型

    类型转换    cast (s AS INT) 将字符串s 转换为数值

    hive中的列支持struct,map和array

    读时模式:

    Hive处理的数据是大数据,在保存表数据时不对数据进行校验,而是在读数据时校验,不符合格式的数据设置为NULL;
     
    读时模式的优点是,加载数据库快。传统的数据库如mysql、oracle是写时模式,不符合格式的数据写不进去。
     
     
     三、表修改                                      http://www.cnblogs.com/HondaHsu/p/4346354.html 
     


    1、重命名表
    ALTER TABLE table_name RENAME TO new_table_name;

    2、改变列名/类型/位置/注释

    hive> ALTER TABLE employee CHANGE name ename String;

    hive> ALTER TABLE employee CHANGE salary salary Double;

    hive>ALTER TABLE test_table CHANGE col1 col2 STRING COMMENT 'The datatype of col2 is STRING' AFTER col3;

    3、添加列

    hive> ALTER TABLE employee ADD COLUMNS (dept STRING COMMENT 'Department name');

    4、建表

    CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
    [(col_name data_type [COMMENT col_comment], ...)]
    [COMMENT table_comment]
    [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
    [CLUSTERED BY (col_name, col_name, ...)
    [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
    [ROW FORMAT row_format]
    [STORED AS file_format]
    [LOCATION hdfs_path]
    •CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常

    •EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)

    •LIKE 允许用户复制现有的表结构,但是不复制数据

    •COMMENT可以为表与字段增加描述

    •ROW FORMAT

    DELIMITED [FIELDS TERMINATED BY char]  默认为'\001'(ctrl+v然后再ctrl+a可以输入这个控制符)分隔,如果建表没写此的话导入的文件必须以\001为分隔符

    [COLLECTION ITEMS TERMINATED BY char]

    [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]

    | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]

    用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。

    •STORED AS

    SEQUENCEFILE

    | TEXTFILE

    | RCFILE

    | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname


    5、复制一个空表

      CREATE TABLE empty_key_value_store LIKE key_value_store;

    6、增加删除分区

    ALTER TABLE page_view ADD PARTITION (dt='2008-08-08', country='us') location '/path/to/us/part080808' PARTITION (dt='2008-08-09', country='us') location '/path/to/us/part080809'; //一次添加多个分区

    ALTER TABLE login DROP IF EXISTS PARTITION (dt='2008-08-08');

    7、修改分区

    ALTER TABLE table_name PARTITION (dt='2008-08-08') SET LOCATION "new location";
    ALTER TABLE table_name PARTITION (dt='2008-08-08') RENAME TO PARTITION (dt='20080808');

    8、修改表属性:

    alter table table_name set TBLPROPERTIES ('EXTERNAL'='TRUE'); //内部表转外部表
    alter table table_name set TBLPROPERTIES ('EXTERNAL'='FALSE'); //外部表转内部表

    9、向数据表内加载文件

    LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

     
     
     

    Hive Command Line

    输入$HIVE_HOME/bin/hive –H 或者 –help可以显示帮助选项:

    -d,–define <key=value> 定义一个变量值,这个变量可以在Hive交互Shell中引用,后面会介绍用法,比如:-d A=B
    –database <databasename> 进入Hive交互Shell时候指定数据库,默认进入default数据库
    -e <quoted-query-string> 命令行执行一段SQL语句
    -f <filename> filename文件中保存HQL语句,执行其中的语句
    -H,–help 显示帮助信息
    -h <hostname> 连接远程Hive Server,后续介绍
    –hiveconf <property=value> 在命令行中设置Hive的运行时配置参数,优先级高于hive-site.xml,但低于Hive交互Shell中使用Set命令设置。
    –hivevar <key=value> 同—define
    -i <filename> 进入Hive交互Shell时候先执行filename中的HQL语句
    -p <port> 连接远程Hive Server的端口号
    -S,–silent 静默模式,指定后不显示执行进度信息,最后只显示结果
    -v,–verbose 冗余模式,额外打印出执行的HQL语句
     
     
  • 相关阅读:
    【转载】关于C#中动态加载AppDomain的问题
    poj2239
    poj2231
    poj2229
    poj2234
    poj2236
    前 路
    只含一个单词的句子
    做人准则
    改变人生的32句励志名言
  • 原文地址:https://www.cnblogs.com/qiuhong10/p/7586927.html
Copyright © 2011-2022 走看看