如何在spark中的函数内使用日志记录特征而不会导致任务无序列化错误

时间:2016-12-08 18:07:15

标签: scala apache-spark

我尝试将火花中的logging特征复制到我的项目中。 以前我用的是打印而不是日志。下面的代码与print语句一起正常工作。但是在添加日志之后 我得到的任务不是可序列化的错误。 这是由于外部类引用了日志,并且闭包试图序列化整个类对象。

可以通过将整个类视为可序列化来解决该问题。但我的问题是

1)序列化全班是否值得?它的优点/缺点是什么?

2)我尝试添加另一个对象并在它运行的parserFunction中使用该记录器但是有没有其他有效的方法来获取函数内的日志?

class SampleClass(interval: String) extends Logging {
// other stuffs

 def getParserFunction():
      (CassandraRow) => List[String] = {
        (row: CassandraRow) =>
          try {
            // doSomeThing
          }
          catch {
            case NonFatal(ex) => {
              logWarning("invalid data:")
            }
          }
      }
    } 

0 个答案:

没有答案