zoukankan      html  css  js  c++  java
  • [Hive]-Table

    1.

      

    2.表 

      2.1 常用命令

        查看描述信息 # desc formatted xxx

             建立表  

      
       CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    -- (Note: TEMPORARY available in Hive 0.14.0 and later)
         [(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
         [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]
         [SKEWED BY (col_name, col_name, ..) -- (Note: Available in Hive 0.10.0 and later)]
         ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
         [STORED AS DIRECTORIES]
         [
           [ROW FORMAT row_format] 
           [STORED AS file_format]
             | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  -- (Note: Available in Hive 0.6.0 and later)
         ]
         [LOCATION hdfs_path] --数据文件存于HDFS上的位置,如果不指定,默认存放于/user/hive/warehouse/数据库名.db/表名下
         [TBLPROPERTIES (property_name=property_value, ...)]   -- (Note: Available in Hive 0.6.0 and later)
         [AS select_statement];   -- (Note: Available in Hive 0.5.0 and later; not supported for external tables)
     
       data_type
        : primitive_type
          | array_type
          | map_type
          | struct_type
          | union_type  -- (Note: Available in Hive 0.7.0 and later)
     
       primitive_type
        : TINYINT
          | SMALLINT
          | INT
          | BIGINT
          | BOOLEAN
          | FLOAT
          | DOUBLE
          | DOUBLE PRECISION -- (Note: Available in Hive 2.2.0 and later)
          | STRING
          | BINARY      -- (Note: Available in Hive 0.8.0 and later)
          | TIMESTAMP   -- (Note: Available in Hive 0.8.0 and later)
          | DECIMAL     -- (Note: Available in Hive 0.11.0 and later)
          | DECIMAL(precision, scale)  -- (Note: Available in Hive 0.13.0 and later)
          | DATE        -- (Note: Available in Hive 0.12.0 and later)
          | VARCHAR     -- (Note: Available in Hive 0.12.0 and later)
          | CHAR        -- (Note: Available in Hive 0.13.0 and later)
     
        array_type
          : ARRAY < data_type >
     
        map_type
          : MAP < primitive_type, data_type >
     
        struct_type
          : STRUCT < col_name : data_type [COMMENT col_comment], ...>
     
        union_type
           : UNIONTYPE < data_type, data_type, ... >  -- (Note: Available in Hive 0.7.0 and later)
       row_format:
           DELIMITED
             [LINES TERMINATED BY char] --行分割符.默认
     
             [FIELDS TERMINATED BY char [ESCAPED BY char]]  --列分割符
             [COLLECTION ITEMS TERMINATED BY char]  -集合对象切割符
             [MAP KEYS TERMINATED BY char] --Map对象切割符
             [NULL DEFINED AS char]  --空值填充字符 
            | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value,...)] 
     
         file_format:
          : SEQUENCEFILE
            | TEXTFILE    -- (Default, depending on hive.default.fileformat configuration)
            | RCFILE      -- (Note: Available in Hive 0.6.0 and later)
            | ORC         -- (Note: Available in Hive 0.11.0 and later)
            | PARQUET     -- (Note: Available in Hive 0.13.0 and later)
            | AVRO        -- (Note: Available in Hive 0.14.0 and later)
            | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
       
        constraint_specification:
          : [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE ]
            [, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...) DISABLE NOVALIDATE
      

       本地数据导入 

          # LOAD DATA [LOCAL] INPATH '本地路径' [OVERWRITE] INTO TABLE 目标表

            [LOCAL]有代表从本地文件系统上导入(拷贝),否则代表从HDFS导入(是移动,源文件会被删掉,切记切记)

            [OVERWRITE]有代表数据全覆盖,否则代表数据追加

          # insert into table 表明 [分区设置]

             select 字段... from 目标表 ;

            语法要求目标表必须存在,

          # create table xxx as select ..... 

             直接将select查询结果创建为表

            语法要求:

                目标表必须不存在

                目标表不能是分区表,外部表或者list bucketing表 

      2.2 外部表&内部表

        内部表(MANAGED_TABLE)

          内部表同时管理MetaData和SourceData.删除后,将同时删除MetaData和SourceData

        外部表(EXTERNAL)

          外部表只管理MetaData.删除后,只删除MetaData.不会影响到SourceData

        以数据导入方式后,数据文件文件默认存放于/user/hive/warehouse/数据库名.db/表名下(表自身文件夹)

        直接于HDFS放入文件,内外部表都可以正确读取直接放入的文件数据.只是如果是内部表,删除会将自行放入的文件数据也一起删除(删除的是表文件夹)

      2.3 分区表

        2.3.1 简述

          分区在HDFS中体现为表的子文件夹.

          分区的最大优势在于降低IO,因为以分区字段筛选数据时,可以直接跳过读取和计算整个分区下的数据.特别是大数据情况下,良好的分区可以显著的提供计算性能

        2.3.2 分区表建立

          create table order_partition.....常规建表

          partitioned by (分区字段,分区字段类型........)

           语法要求:分区字段不得与任何非分区字段同名

        2.3.3 静态分区

          静态分区是手动指定分区,将数据直接放入目标分区.

            LOAD DATA LOCAL INPATH '/home/hadoop/data/order.txt' 

            OVERWRITE INTO TABLE order_partition 

            PARTITION(event_month='2014-05');

        2.3.4 动态分区

            LOAD DATA LOCAL INPATH '/home/hadoop/data/order.txt' 

            OVERWRITE INTO TABLE order_partition 

            PARTITION(event_month='2014-05');

      

        

  • 相关阅读:
    pxc5.7配置安装
    在SQL中 给字符串补0方法
    python中字符串连接的四种方式
    python中math模块常用的方法整理
    python 字符串比较
    sql去重;同一条数据出现多条取一条的sql语句
    给一行添加数据库不存在的自然数顺序编号
    jvisualvm下载
    sql截取字符串后面四位
    idea破解更新
  • 原文地址:https://www.cnblogs.com/NightPxy/p/9131314.html
Copyright © 2011-2022 走看看