默认分隔符
# 默认分隔符
分隔符 | 输入方式 | 含义 |
\n | vi中换行即可 | 用来分割行数据的,每行1条数据。 |
^A | ctrl+V ctrl+A | 用来分割字段(列),在HQL语句中使用\001表示 |
^B | ctrl+B | 用来分割array内元素、struct内元素、map内kv和kv之间。在HQL建表语句中使用\002表示 |
^C | ctrl+V ctrl+C | 用于map的k和v之间的分割。在HQL建表语句中使用 \003 表示 |
# 数据导入
# 从linux本地导入(overwrite是覆盖已有数据)
load data local inpath ‘/opt/doc/person1.txt’ [overwrite] into table t_person;
# 从hdfs系统中导入(overwrite是覆盖已有数据)
load data inpath '/file/person.txt' [overwrite] into table t_person;
# 验证数据
1. 查询数据
select * from t_person;
2 自定义分隔符
# 分隔符设计
分隔符 | 含义 | 备注 |
, | 用来表示每个列的值之间分隔符。 | |
- | 用来分割array中每个元素,以及struct中的每个值,以及map中kv与kv之间。 | |
| | 用来分割map的k和v之间 | |
\n | 每条数据分割使用换行。 | |
# 建表
create table t_person1(
id string,
name string,
salary double,
birthday date,
sex char(1),
hobbies array<string>,
cards map<string,string>,
addr struct<city:string,zipCode:string>
) row format delimited
fields terminated by ','--列的分割
collection items terminated by '-'--数组 struct的属性 map的kv和kv之间
map keys terminated by '|'-- map的k与v的分割
lines terminated by '\n';--行数据之间的分割
# 测试数据
1,张三,8000.0,2019-9-9,1,抽烟-喝酒-烫头,123456|中国银行-22334455|建设银行,北京-10010
2,李四,9000.0,2019-8-9,0,抽烟-喝酒-烫头,123456|中国银行-22334455|建设银行,郑州-45000
3,王五,7000.0,2019-7-9,1,喝酒-烫头,123456|中国银行-22334455|建设银行,北京-10010
4,赵6,100.0,2019-10-9,0,抽烟-烫头,123456|中国银行-22334455|建设银行,郑州-45000
5,于谦,1000.0,2019-10-9,0,抽烟-喝酒,123456|中国银行-22334455|建设银行,北京-10010
6,郭德纲,1000.0,2019-10-9,1,抽烟-烫头,123456|中国银行-22334455|建设银行,天津-20010
# 导入数据
# 在hive命令行中执行
-- overwrite 是覆盖的意思,可以省略。
load data local inpath ‘/opt/doc/person1.txt’ [overwrite] into table t_person;
# 本质上就是将数据上传到hdfs中(数据是受hive的管理)
dfs -ls /user/hive/warehouse/baizhi.db/t_person
# 我们可以使用dfs命令,直接按照规定分隔符,上传文件到该目录下,也能查询到。
3 JSON分割符
jar添加和数据导入,建表,在beeline里面操作
1.本地创建json文件
{"id":1,"name":"zhangsan","sex":true,"birth":"1991-02-08"}
{"id":2,"name":"lisi","sex":true,"birth":"1991-02-08"}
添加格式解析器的jar(本地客户端命令)
# 在hive的客户端执行(临时添加jar到hive的classpath,有效期本链接内)
add jar /opt/installs/hive1.2.1/hcatalog/share/hcatalog/hive-hcatalog-core-1.2.1.jar
# 补充:永久添加,Hive服务器级别有效。
1. 将需要添加到hive的classpath的jar,拷贝到hive下的auxlib目录下,
2. 重启hiveserver即可。
建表
加载文件数据(本地客户端命令)
查看数据
select * from t_person2;
4 CSV格式映射
# 文件名 user_csv.csv
1001,张三,1,1999-9-9
1002,李四,0,1999-9-9
1003,王五,1,1999-9-9
导入解析vsc的文件jar
# 在hive的客户端执行
add jar /opt/installs/hive1.2.1/hcatalog/share/hcatalog/hive-hcatalog-core-1.2.1.jar
建表
加载数据
查询表
select * from t_person3;
5 正则分隔符数据:access.log
建表语句
导入数据
查看数据
select * from t_access;