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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM