- Hive在HDFS上的默认存储路径
Hive的数据都是存储在HDFS上的,默认有一个根目录,在hive-site.xml中,由参数hive.metastore.warehouse.dir指定。默认值为/user/hive/warehouse.
- 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/'; - 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上的存储位置。
转载于:https://www.cnblogs.com/yangjiming/p/9390750.html