• HIVE


    HIVE教程 HIVE认证设置

    常用命令

    # 查看所有数据库
    show databases; 
    # 进入某个数据库 use 数据库; # 展示所有表 show tables; # 显示表结构 desc 表名; # 显示表名的分区 show partitions 表名; # 显示创建表的结构 show create table_name; # 建表语句 # 内部表 use xxdb; create table xxx; # 创建一个表,结构与其他一样 create table xxx like xxx; # 外部表 use xxdb; create external table xxx; # 分区表 use xxdb; create external table xxx (l
    int) partitoned by (d string) # 内外部表转化 alter table table_name set TBLPROPROTIES ('EXTERNAL'='TRUE'); # 内部表转外部表 alter table table_name set TBLPROPROTIES ('EXTERNAL'='FALSE');# 外部表转内部表 # 表结构修改 # 重命名表 use xxxdb; alter table table_name rename to new_table_name; # 增加字段 alter table table_name add columns (newcol1 int comment ‘新增’); # 修改字段 alter table table_name change col_name new_col_name new_type; # 删除字段(COLUMNS中只放保留的字段) alter table table_name replace columns (col1 int,col2 string,col3 string); # 删除表 use xxxdb; drop table table_name; # 删除分区 # 注意:若是外部表,则还需要删除文件(hadoop fs -rm -r -f hdfspath) alter table table_name drop if exists partitions (d=‘2016-07-01');

    #从文件加载数据进表(OVERWRITE覆盖,追加不需要OVERWRITE关键字)
    LOAD DATA LOCAL INPATH 'dim_csl_rule_config.txt' OVERWRITE into table dim.dim_csl_rule_config;
    #从查询语句给table插入数据
    INSERT OVERWRITE TABLE test_h02_click_log PARTITION(dt) select * 
    from stage.s_h02_click_log where dt='2014-01-22' limit 100;

      #使用truncate仅可删除内部表数据,不可删除表结构 (truncate可删除所有的行,但是不能删除外部表)
      truncate table 表名
      #使用shell命令删除外部表
      hdfs -dfs -rm -r 外部表路径
      #使用 drop 可删除整个表
      drop table 表名

    
    

    数据类型

    1)基础数据类型

    注:

    binary:二进制类型。         

    timestamp:带可选的纳秒级精度UNIX  timestamp。timestamp与时区无关,存储为UNIX纪元的偏移量。Hive提供了用于               timestamp和时区相互转换的便利UDF:to_utc_timestamp和 from_utc_timestamp。 Timestamp类型可以使用所有的日期时间UDF,如month、day、year等。文本文件中的Timestamp必须使用yyyy-mm-dd hh:mm:ss[.f...]的格式,如果使用其它格式,将它们声明为合适的类型(INT、FLOAT、STRING等)并使用UDF将它们转换为 Timestamp。其支持的类型为:

             整数类型:转换为秒级的UNIX时间戳。

             浮点数类型:转换为带小数精度的UNIX时间戳。

             字符串类型:适合java.sql.Timestamp格式"YYYY-MM-DD HH:MM:SS.fffffffff"(9位小数精度)。

     Date:描述了特定的年月日,以YYYY-­MM-­DD格式表示,例如2014-05-29。仅可与Date、timestamp和String相互转化。

     2)复杂数据类型

    复杂数据类型包括:ARRAY、Map、struct、union,这些复杂类型是由基础类型构成的

    ARRAY:ARRAY类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问。比如有一个ARRAY类型的变量fruits,它是由 ['apple','orange','mango']组成,那么我们可以通过fruits[1]来访问元素orange,因为ARRAY类型的下标是从 0开始的;

     MAP:MAP包含key->value键值对,可以通过key来访问元素。比如”userlist”是一个map类型,其中username是 key,password是value;那么我们可以通过userlist['username']来得到这个用户对应的password;

     STRUCT:STRUCT可以包含不同数据类型的元素。这些元素可以通过”点语法”的方式来得到所需要的元素,比如user是一个STRUCT类型,那么可以通过user.address得到这个用户的地址。

     UNION:UNIONTYPE,他是从Hive 0.7.0开始支持的。

    Hive实现update和delete

    Hive自0.14版本开始支持update和delete,要执行update和delete的表必须支持ACID

    一个表要实现update和delete功能,该表就必须支持ACID,而支持ACID,就必须满足以下条件:

    1、表的存储格式必须是ORC(STORED AS ORC);

    2、表必须进行分桶(CLUSTERED BY (col_name, col_name, ...)  INTO num_buckets BUCKETS);

    3、Table property中参数transactional必须设定为True(tblproperties('transactional'='true'));

    4、以下配置项必须被设定:

         Client端:

    • hive.support.concurrency – true
    • hive.enforce.bucketing – true
    • hive.exec.dynamic.partition.mode – nonstrict  
    • hive.txn.manager – org.apache.hadoop.hive.ql.lockmgr.DbTxnManager  

         服务端:

    • hive.compactor.initiator.on – true
    • hive.compactor.worker.threads – 1
    • hive.txn.manager – org.apache.hadoop.hive.ql.lockmgr.DbTxnManager(经过测试,服务端也需要设定该配置项)

           注意:上述配置项必须区分Client端和服务端。在Cloudera Manager上可以分别添加(hive—>配置—>高级),在更新部署配置信息的时候需要勾选部署客户端配置(默认是勾选的)。

     

     

    保存修改后

     

  • 相关阅读:
    python 操作数据库
    python学习
    Java学习(十)
    Java学习(九)
    Java学习(八)
    Java学习(七)
    Java学习(六)
    Java学习(五)
    Java学习(四)
    Java学习(三)
  • 原文地址:https://www.cnblogs.com/xuchen0117/p/13502715.html
Copyright © 2020-2023  润新知