hive教程:分隔符

介绍

访问 hadoop web管理页面:http://hadoop1:9870

下载数据、查看

默认的列与列的分隔符,不是文本的字符

列分隔符

八进制编码 \001,用于分隔字段(列)

一般修改成 \t(制表符、tab健) 或 , 或 |

例子:

张三    男    19
张三,男,19
张三|男|19

元素分隔符

八进制编码 \002,用于 分隔 元素内部 的数据,如:ARRAY、MAP 或者 STRUCT 中的元素,或 MAP中键-值对 之间 的分隔。

一般修改成 , 或 -

例子:

李雷    干饭,干游戏,睡觉
李雷    干饭-干游戏-睡觉

key/value分隔符

八进制编码 \003 表示,用于MAP中 key、value之间的分隔。

一般修改成 :

例子:

李雷    性别:男    年龄:20

行分隔符

\n,对于文本文件来说,每行都是一条记录,因此换行符可以分隔记录

使用场景

  1. 生成数据文件

  2. 通过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


原文出处:/show_1IXjxAort6L.html