介绍
访问 hadoop web管理页面:http://hadoop1:9870
下载数据、查看
默认的列与列的分隔符,不是文本的字符
列分隔符
八进制编码 \001,用于分隔字段(列)
一般修改成 \t(制表符、tab健) 或 , 或 |
例子:
张三 男 19
张三,男,19
张三|男|19
元素分隔符
八进制编码 \002,用于 分隔 元素内部 的数据,如:ARRAY、MAP 或者 STRUCT 中的元素,或 MAP中键-值对 之间 的分隔。
一般修改成 , 或 -
例子:
李雷 干饭,干游戏,睡觉
李雷 干饭-干游戏-睡觉
key/value分隔符
八进制编码 \003 表示,用于MAP中 key、value之间的分隔。
一般修改成 :
例子:
李雷 性别:男 年龄:20
行分隔符
\n,对于文本文件来说,每行都是一条记录,因此换行符可以分隔记录
使用场景
生成数据文件
通过hive导出数据到本地
默认分隔符的缺点
系统默认的特殊字符,使用文本编辑器是看不到的,也不方便编辑
设置分隔符
创建表时指定
create table student(
name string,
age int,
hobby string,
info map<string,string>
)
row format delimited
fields terminated by ','
collection items terminated by'-'
map keys terminated by ':';
解释:
,:列分隔符-:集合中的元素分隔符,如:ARRAY、MAP、STRUCT内部分隔符::key、value分隔符
修改分隔符
表已经创建,需要修改
alter table student set serdeproperties('field.delim'='\t');
警告
修改后,原有数据的分隔符不会改变(HDFS 不支持随机修改),导致查询时,原有数据的格式无法识别
感谢:
https://blog.csdn.net/heiren_a/article/details/109119081

