Hive中的数据库(Database)和表(Table)

  1. Hive在HDFS上的默认存储路径
    Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse.
  2. Hive中的数据库(Database)
    Hive中的数据库在HDFS上的存储路径为:${hive.metastore.warehouse.dir}/databasename.db

    CREATE DATABASE IF NOT EXISTS hive
    COMMENT 'hive测试库'
    localtion 'hdfs://namenode/user/test/hive.db/';
  3. Hive中的表(Table)
    表的存储路径为:${hive.metastore.warehouse.dir}/databasename.db/tablename/
    可以使用desc formatted tablename;命令查看表的详细信息,其中包括了存储路径:
    Location: hdfs://cdh5/hivedata/warehouse/hive.db/test
    Hive中的表分为内部表(MANAGED_TABLE)和外部表(EXTERNAL_TABLE)。
    内部表和外部表最大的区别
        内部表DROP时候会删除内部表和删除HDFS上的数据;
        外部表DROP时候会删除外部表但不会删除HDFS上的数据;
    内部表适用场景:
        Hive中间表、结果表、一般不需要从外部(如本地文件、HDFS上load数    据)的情况。
    外部表适用场景:
        源表,需要定期将外部数据映射到表中。
    CREATE EXTERNAL TABLE test(
    id INT,
    ip STRING COMMENT '访问者IP',
    avg_view_depth DECIMAL(5,1),
    bounce_rate DECIMAL(6,5)
    ) COMMENT '测试'
    PARTITIONED BY (day STRING)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    STORED AS textfile
    LOCATION 'hdfs://cdh5/tmp/hive/;

    关键字EXTERNAL:表示该表为外部表,如果不指定EXTERNAL关键字,则表示内部表 关键字COMMENT:为表和列添加注释 关键字PARTITIONED BY:表示该表为分区表,分区字段为day,类型为string 关键字ROW FORMAT DELIMITED 指定表的分隔符,通常后面要与以下关键字连用:   FIELDS TERMINATED BY ',' //指定每行中字段分隔符为逗号   LINES TERMINATED BY '\n' //指定行分隔符   COLLECTION ITEMS TERMINATED BY ',' //指定集合中元素之间的分隔符   MAP KEYS TERMINATED BY ':' //指定数据中Map类型的Key与Value之间的分隔符 关键字STORED AS:指定表在HDFS上的文件存储格式,可选的文件存储格式有: TEXTFILE //文本,默认值 SEQUENCEFILE // 二进制序列文件 RCFILE //列式存储格式文件 Hive0.6以后开始支持
    ORC //列式存储格式文件,比RCFILE有更高的压缩比和读写效率,Hive0.11以后开始支持 PARQUET //列出存储格式文件,Hive0.13以后开始支持 关键词LOCATION:指定表在HDFS上的存储位置。

    原文地址:Hive中的数据库(Database)和表(Table)

posted @ 2018-07-30 15:23  华格瑞沙  阅读(1853)  评论(0编辑  收藏  举报