hive: 创建内部表外部表,导入数据几种方式。

hive 库命名规则:
1、名字不能使用数字开头

2、不能使用关键字

3、尽量不使用特殊符号

4、数据库和表名不区分大小写(分区伪列区分严格区分大小写)

5、创建库,创建库的本质:在hive的数据仓库(hdfs的/user/hive/warehouse/)下创建一个目录(目录名为库名.db)。

create database [if not exists] test_db;

hive中表的类型:

1、内部表
表目录会创建在hdfs下/usr/hive/warehouse/下的库名(xxx.db)目录下

2、外部表
外部表会根据建表时LOCATION关键字指定的路径创建表目录。如果指定的目录存在,什么都不做。如果没有指定LOCATION,则位置与内部表相同。

内部表和外部表的创建,差别就在两个关键字:EXTERNAL LOCATION

内部表:CREATE TABLE IF NOT EXITST T_INNER(ID INT);
外部表:	CREATE EXTERNAL TABLE IF NOT EXITST T_OUTER(ID INT ) LOCATION '/AAAA/BBB/XXX';

HIVE中建表语句做两件事:
1、创建HDFS上相应的目录
2、在元数据库中创建相应表的描述数据(元数据)

内部表和外部表的drop时的不同的特性:
1、drop时,都会清除元数据信息
2、drop时,内部表会将表目录删除。外部表不会删除表目录。
所以,整个数据仓库中的最底层的表(与业务数据库对接的表,ODS)的表,不会被删除。

外部表的使用场景:
使用后数据不删除使用外部表。(推荐使用这个)

HIVE加载数据规范:

hive使用的是严格的读时模式,加载数据是不检查数据的完整性。读时发现数据不对则使用NULL来代替。
hive的数据的默认分隔符是:ctrl+v ctrl+a

创建表:

create table if not exists t_user_info(
id int,
name string,
age int
) 
row format delimited
fields terminated by ','
stored as textfile;

加载数据:(本地和hdfs 就local关键字决定)

1、加载本地数据:

load data local inpath '/usr/local/hivedata/users.txt' into table t_user_info;

2、加载hdfs数据:

load data inpath '/hivedata/user1.txt' into table t_user_info;

加载数据的本质:
将本地数据文件copy到HDFS上对应的表的目录下。
将HDFS上的数据文件MV到HDFS上的对应表的目录下。

 

你可能感兴趣的:(大数据Hive)