写的不到位的地方,欢迎评论指出不足之处

1、创建数据库

create database test;

2、创建内部表(设置分隔符)

fields 字段分隔符,collection 数组连接符,map keys的分隔符

create table psn
(
id int,
name string,
likes array<string>,
address map<string,string>
)
row format delimited
fields  terminated by ','
collection items terminated by '-'
map keys terminated by ':';

3、在本地插入数据 ( 文件地址是 Linux 中的地址,因为有关键字 Local )

load data local inpath '/home/hivedata.txt' into table psn;

4、在HDFS插入数据 ( 文件地址是 hdfs 中的地址 )

load data inpath '/home/hivedata.txt' into table psn;

两效果都能插入数据

hive建表路径配置参数 hive建表并添加数据_大数据

5、创建外部表(设置分隔符)

fields 字段分隔符,collection 数组连接符,map keys 分隔符,location 数据位置

create external table psnfq
(
 id int,
 name string,
 likes array<string>,
 address map<string,string>
)
row format delimited
fields  terminated by ','
collection items terminated by '-'
map keys terminated by ':'
location '/fqdata';

hive建表路径配置参数 hive建表并添加数据_hive_02

hive建表路径配置参数 hive建表并添加数据_大数据_03

  • 内部表与外部表
  • 创建
  • 内部表创建时,数据存储在hive的默认目录中
  • 外部表创建时,需要制定 external 的关键字同时需要制定 location  存储目录
  • 删除
  • 内部表删除时,将数据和元数据删除
  • 外部表删除时,只会删除元数据,不会删除数据
  • 场景
  • 内部表,先建表再插数据
  • 外部表,可随意
  • 具体根据业务决定,但外部表用的比较多