使用 scalding 或 scala 删除文件尾记录

Posted

技术标签:

【中文标题】使用 scalding 或 scala 删除文件尾记录【英文标题】:Remove file trailer record using scalding or scala 【发布时间】:2015-03-04 12:35:59 【问题描述】:

我正在尝试使用 Pipe (cascading.pipe.Pipe) 来读取文件。 因此,文件中的每条记录都遵循一个模式,但尾部记录除外;每当管道读取代码执行时,它都会抛出异常,因为预告片记录与模式不匹配。 管道看起来像:

fieldlst:List(col1, col2, col3)

val filtersInput = Csv(inputFilePath, separator = "|", fields = fieldlst, skipHeader = true) .读

谁能告诉我一个解决方案。通过读写文件删除预告片似乎是一个简单的解决方案,但为此,我必须读写整个文件并且文件可能非常大。

【问题讨论】:

【参考方案1】:

您可以使用 TextLine,然后使用“|”分割记录,而不是使用 Csv 管道。

【讨论】:

感谢 satendra !!!确实有效,但是当我使用 TextLine 读取文件并写回它时,它包括每行开头的序列值,例如1,2,3 ...我怎样才能避免这种情况,或者有没有一种方法可以简单地在阅读后不写入文件?注意:- 我在执行 TextLine 时覆盖 FlowListener。

以上是关于使用 scalding 或 scala 删除文件尾记录的主要内容,如果未能解决你的问题,请参考以下文章

Scala 机器学习库

Scio:Apache Beam和Google Cloud Dataflow的Scala API

scala-尾递归

如何在 Scala 中使用 Stream.cons 编写不泄漏的尾递归函数?

有没有办法在Scalding中指定映射器的数量?

Scala尾递归优化