表的存儲路徑為:${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上的存儲位置。