hive serde 解决多字节分隔符

2017年8月15日21:30:44

背景:hive默认只支持单字节的分隔符,有时候我们遇到多字节的时候就麻烦了,一下是解决hive多字节分隔符的问题

1.hive有哪些操作支持解析多字节分隔符

1、使用hive内置的 其他 serde 去解决

2、更改源码

这里我只测试使用hive内置的 其他 serde 去解决

1、使用hive内置的 其他 serde 去解决
几乎是一种万能的解决方式: 正则   RegexSerDe,   LazySimpleSerDe(默认)
如果要使用RegexSerDe, 那么需要指定:
1、正则表达式
2、要根据正则表达式去匹配到的对应域的值拿出来


1||huangbo
(.*)\\|\\|(.*)   ===  %1$s , %2$s

准备数据

hive serde 解决多字节分隔符_第1张图片

// 创建表,表中的数据就是 || 分隔的两个字段值
create table doubledelimiter(id string,name string)
row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
with serdeproperties('input.regex'='(.*)\\|\\|(.*)','output.format.string'='%1$s %2$s')
stored as textfile;


// 导入数据
load data local inpath "/home/hadoop/doubledelimiter.txt" into table doubledelimiter;


// 验证:
select id, name from doubledelimiter;

hive serde 解决多字节分隔符_第2张图片

主要还是建表的时候指定好:create table doubledelimiter(id string,name string)
row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
with serdeproperties('input.regex'='(.*)\\|\\|(.*)','output.format.string'='%1$s %2$s')
stored as textfile;

补充说明:

数据格式4::da::3

hive serde 解决多字节分隔符_第3张图片

你可能感兴趣的:(hive serde 解决多字节分隔符)