将标头添加到TypedPipe

时间:2015-03-04 03:41:50

标签: scala cascading scalding

我正在使用scalding 0.12版本TypedPipe。我想用{header}将输出写入csv。如何添加标题,我看到`writeHeader = true / false"但是我如何提供标题。

2 个答案:

答案 0 :(得分:1)

使用类型安全api,我用以下代码编写TSV文件:

val data: TypedPipe[String, String] = ...
data.write(TypedTsv[(String, String)](outputPath))

TypedPipeTypedSeperatedFile类中定义。看一下源代码:

trait TypedSeperatedFile extends Serializable {
  def separator: String
  def skipHeader: Boolean = false
  def writeHeader: Boolean = false

  def apply[T: Manifest: TupleConverter: TupleSetter](path: String): FixedPathTypedDelimited[T] =
    apply(Seq(path))

  def apply[T: Manifest: TupleConverter: TupleSetter](path: String, f: Fields): FixedPathTypedDelimited[T] =
    apply(Seq(path), f)

  // others apply method
}

object TypedTsv extends TypedSeperatedFile {
  val separator = "\t"
}

使用标头编写TSV的一种方法是实现扩展TypedSeperatedFile类的自己的对象:

object TypedTsvWithHeader extends TypedSeperatedFile {
  val separator = "\t"
  override val writeHeader = true
}

然后您可以按照以下方式使用它:

data.write(TypedTsvWithHeader[(String, String)](outputPath,
  List("header1", "header2")))

答案 1 :(得分:0)

  

.write(Tsv(" bcd.tsv",schema,writeHeader = true))

你正在寻找这样的东西吗?