hadoop—根据其中一个字段将一个滚烫的typedpipe输出到多个目录中的sequencefile

gxwragnw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(269)

我在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,避免一个循环?

gpnt7bae

gpnt7bae1#

有com.twitter.bollowing.templatedsequencefile可以做你需要的事情。它看起来就像templatetsv,但输出到sequencefile

相关问题