我在hadoop上使用烫伤,我有一个typedpipe形式的大数据集,我希望基于其中一个数据字段以块的形式输出。
例如,数据是 <category, field1, field2>
,我希望每个类别的数据存储在一个单独类别的sequencefile中,例如。 outPath/cat1
, outPath/cat2
等等,我想要一个mapreduce阶段(或者避免循环)。
我读过关于 TemplatedTsv
选项:如何在烫伤桶输出
在这里:如何输出数据与Hive式目录结构在烫伤?
但是,这只适用于需要tsv文件而不是sequencefile的情况。
显然,循环是有效的:
var category = 0L
for (category <- categories) {
data
.filter(_.category == category)
.map(t => (NullWritable.get, new BytesWritable(SerializationUtils.serialize(t))))
.write(WritableSequenceFile(outPath + "/" + category))
}
那么,有没有一种等效的方法 TemplateTsv
写一个sequencefile,避免一个循环?
1条答案
按热度按时间gpnt7bae1#
有com.twitter.bollowing.templatedsequencefile可以做你需要的事情。它看起来就像templatetsv,但输出到sequencefile