Apache Hive--特殊分隔符处理| 学习笔记

开发者学堂课程【大数据 Hive 教程精讲:课时名称】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/90/detail/1384


Apache Hive--特殊分隔符处理


内容介绍:

一、特殊分隔符处理(扩展)


一、特殊分隔符处理(扩展)

hive 读取数据的机制:

首先用 InputFormat

<默认是:org.apache.hadoop.mapred.TextInputFormat >的一个具体实现类读入文件数据,返回一条一条的记录(可以是行,或者是逻辑中的“行”)

然后利用 SerDe<默认: org. apache. hadoop.hive.serde2.lazy. LazySimpleSerDe>的一个具体实现类,对上面返回的一条一条的记录进行字段切割。

 Hive 对文件中字段的分隔符默认情况下只支持单字节分隔符,如果数据文件中的分隔符是多字符的,如下所示:

01||zhangsan

02| | lisi

可用使用 RegexSerDe 通过正则表达式来抽取字段

drop table t_bi_reg;

create table t_bi_reg(id string,name string)

row format serde

'org.apache.hadoop.hive.serde2.RegexSerDe'

with serdeproperties(

'input.regex'='(.*)11/N1/(.*)".

'output.format.string'='%1$s %2$s'

stored as textfile;

hive>load data local inpath ' /root/hivedata/bi.dat' into table t_bi_reg;

hive>select * from t_bi_reg;

其中:

input.regex:输入的正则表达式

表示||左右两边任意字符被抽取为一个字段

output.format.string:输出的正则表达式

%1$s%2$s则分别表示表中的第一个字段、第二个地段

注意事项:

使用 RegexSerDe 类时,所有的字段必须为 string

Apache Hive--特殊分隔符处理| 学习笔记

上一篇:网络管理自动化之四、系统补丁更新自动化


下一篇:windows下安装ubuntu 17.1双系统