本文整理汇总了Scala中com.univocity.parsers.csv.CsvWriter类的典型用法代码示例。如果您正苦于以下问题:Scala CsvWriter类的具体用法?Scala CsvWriter怎么用?Scala CsvWriter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CsvWriter类的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Scala代码示例。
示例1: SequenceSink
//设置package包名称以及导入依赖的类
package io.eels.component.sequence
import java.io.StringWriter
import com.univocity.parsers.csv.{CsvWriter, CsvWriterSettings}
import io.eels.{Row, Sink, SinkWriter}
import io.eels.schema.StructType
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.Path
import org.apache.hadoop.io.{BytesWritable, IntWritable, SequenceFile}
case class SequenceSink(path: Path)(implicit conf: Configuration) extends Sink {
override def open(schema: StructType): SinkWriter = new SequenceSinkWriter(schema, path)
class SequenceSinkWriter(schema: StructType, path: Path) extends SinkWriter {
val writer = SequenceFile.createWriter(conf,
SequenceFile.Writer.file(path),
SequenceFile.Writer.keyClass(classOf[IntWritable]),
SequenceFile.Writer.valueClass(classOf[BytesWritable])
)
val key = new IntWritable(0)
val headers = valuesToCsv(schema.fieldNames())
writer.append(key, new BytesWritable(headers.getBytes))
override def close(): Unit = writer.close()
override def write(row: Row): Unit = {
this.synchronized {
val csv = valuesToCsv(row.values)
writer.append(key, new BytesWritable(csv.getBytes()))
key.set(key.get() + 1)
}
}
private def valuesToCsv(values: Seq[Any]): String = {
val swriter = new StringWriter()
val csv = new CsvWriter(swriter, new CsvWriterSettings())
csv.writeRow(values.map {
case null => null
case other => other.toString
}: _*)
csv.close()
swriter.toString().trim()
}
}
}