Java的String不能处理中文utf-8编码

Sequence File 文件格式支持文件分割,所以适合map-reduce作业。最近有一个项目,把kafka的protobuf数据写到hdfs,方便下游的离线作业做数据分析。

在kafka中,protobuf序列化成了byte数组(message就是byte数组)。这个时候在linkedin的camus(linkedin开源的一个把kafka数据写到hdfs 的工具)中配置作业把kafka message以sequence file的格式写到hdfs。Sequence file的key是org.apache.hadoop.io.LongWritable,value是org.apache.hadoop.io.Text。

很顺利,我们把数据写到了hdfs,然后我自己写一个pig udf去解析protobuf的数据。Pig本身有一个udf去读取sequencefile:org.apache.pig.piggybank.storage.SequenceFileLoader。因为存放的是Text,所以pig读取的时候就转成了chararray。然后我就遇到了如下的错误:

bad record, bad formatcom.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field.  This could mean either than the input has been truncated or that an embedded message misreported its own length.</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值