Hive 使用serde 处理分隔符

一Hive用正则表达式处理稍复杂数据的导入文件
A正则解析器RegexSerDe
regextserde用法
使用该解析器来处理Apche Web日志数据的一个例子:这个例子好好读读
处理web日志
这个例子也说明了要想使用该解析器是需要导入相应的jar包的。
关于output.format.string" = "%1s s %2ss %3s s %4ss %5s s %6ss %7s s %8ss %9$s
String.format %1s

其中%1 %2表示第1,2个占位符。$s表示用字符串形式替代占位符,是一种格式化输出。

二使用hive处理csv格式文件
csv:逗号分隔值文件
我们右键以记事本打开要处理的csv文件。这里以用八爪鱼爬下来的fang4.csv为例

从图上可以看到,csv数据实际上以逗号作为字段分隔符,但是一般不要直接
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','简单的这样指定分隔符来建表。因为有两个问题:
1.如果列值自身存在逗号,会导致错误
2.有些字符串是加了引号的。
所以如果只是以逗号为分隔符来简单建表的话,会导致一个字段被截成好几个,并且引号也去不掉。阿里云链接里有对比例子。
可以看到这里的csv文件里,只要列值里有逗号的,全都加了引号引起来了,代表是一个整体的字符串。
用OpenCSVSerDe来处理CSV文件。
参考文档:阿里云csv文件格式讲解
csv serde介绍

从https://github.com/ogrodnek/csv-serde/downloads上下载csv-serde-1.1.2.jar包。(用谷歌浏览器下载)
把这个jar包上传到hive下的lib目录里
下面就正式开始处理文件。

1.上传csv文件到linx本地
2.进行编码转换,防止一会出现中文乱码。在csv文件所在目录下将文件转成utf-8编码集
为了防止处理的时候乱码,先把csv格式文件进行类型转换,转换成utf-8格式。
$ iconv -f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值