所以人们在压缩Scalding Jobs(包括我自己)的输出时遇到了问题。谷歌搜索后,我在一个不起眼的论坛上得到了一个奇怪的答案,但没有什么适合人们的复制和粘贴需求。
我想要一个像Tsv
这样的输出,但写出压缩输出。
答案 0 :(得分:3)
无论如何,经过多次努力,我设法编写了一个TsvCompressed输出,它似乎完成了这项工作(你仍然需要设置hadoop作业系统配置属性,即将compress设置为true,并将编解码器设置为合理的或默认为蹩脚的放气)
import com.twitter.scalding._
import cascading.tuple.Fields
import cascading.scheme.local
import cascading.scheme.hadoop.{TextLine, TextDelimited}
import cascading.scheme.Scheme
import org.apache.hadoop.mapred.{OutputCollector, RecordReader, JobConf}
case class TsvCompressed(p: String) extends FixedPathSource(p) with DelimitedSchemeCompressed
trait DelimitedSchemeCompressed extends Source {
val types: Array[Class[_]] = null
override def localScheme = new local.TextDelimited(Fields.ALL, false, false, "\t", types)
override def hdfsScheme = {
val temp = new TextDelimited(Fields.ALL, false, false, "\t", types)
temp.setSinkCompression(TextLine.Compress.ENABLE)
temp.asInstanceOf[Scheme[JobConf,RecordReader[_,_],OutputCollector[_,_],_,_]]
}
}
答案 1 :(得分:1)
我还有一个小项目,展示如何从Tsv
获得压缩输出。 WordCount-Compressed
Scalding正在将null
设置为级联TextDelimeted
参数,该参数会禁用压缩。