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');

      

        

  • 相关阅读:
    程序员的7中武器
    需要强化的知识
    微软中国联合小i推出MSN群Beta 不需任何插件
    XML Notepad 2006 v2.0
    Sandcastle August 2006 Community Technology Preview
    [推荐] TechNet 广播 SQL Server 2000完结篇
    《太空帝国 4》(Space Empires IV)以及 xxMod 英文版 中文版 TDM Mod 英文版 中文版
    IronPython 1.0 RC2 更新 1.0.60816
    Microsoft .NET Framework 3.0 RC1
    《Oracle Developer Suite 10g》(Oracle Developer Suite 10g)V10.1.2.0.2
  • 原文地址:https://www.cnblogs.com/NightPxy/p/9131314.html
Copyright © 2011-2022 走看看