2016-11-29 84 views
1

我正在用Apache Spark开发应用程序,我需要能够收集自定义异常或消息,然后通过电子邮件发送它们。Apache Spark collect描述意外行为的异常或消息

目前我使用的是CollectionAccumulator[String],但是我必须隐式地或显式地提供这个累加器或sparkContext。

我非常确定必须有像全局对象持有者那样的东西,可以这样使用:GlobalExceptionAccumulator.accumulate(e),或者某人使用了类似的东西或甚至更好的解决方案。也许这个累加器的自定义包装。

这里是如何为现在开发:

implicit val acc = spark.sparkContext.collectionAccumulator[String]("Failed.") 
     ... 
object Mappings { 
     ...  
    def valueOf(name: String)(implicit accumulator: CollectionAccumulator[String]): String = { 
      Try(vals(name)) match { 
       case Success(value) => value 
        case Failure(e) => 
        accumulator.add(s"No value defined for '$name'") 
        "" 
      } 
    } 
     ... 
} 

回答

0

决定采用LogStash与ElasticSearch和Kibana代替。所以我们的日志消息被发布到日志服务器中。 Kibana提供可视化。 ElasticSearch提供全文搜索。