我得到了一个hadoop sequencefile,其中键是intwritable,值是实现可写的任意java类,并使用了一个有趣的tostring()方法。我想创建一个两列的配置单元表,其中第一列是int形式的键,第二列是string或varchar形式的值。
我想用最有品味和最简单的方式来做这件事:我不需要写200行代码来说“只要解码这个,然后调用tostring()”。
我目前的解决方案只是做一个额外的mapreduce工作,在将它输入到hive之前将它以我想要的格式放置,但是我发现这是出于明显的原因。
谢谢!
2条答案
按热度按时间yb3bgrhw1#
下面的示例使用thriftdeserializer类作为表的serde。您可以创建自己的serde(实现配置单元的序列化器/反序列化器接口),并在创建表时提供该接口。
raogr8fs2#
您可以直接从配置单元读取序列文件。对于您的情况,您需要实施
org.apache.hadoop.hive.serde2.Deserializer
在反序列化程序中,可以调用toString
方法。不应超过30行代码。