如何在spark scala应用程序的配置中对case类字段设置布尔条件,并在运行时对其求值?

vcudknz3  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(189)

我有一个用scala编写的spark应用程序,其中有一个dataset[event],其中event是用户定义的类型,如下所示: case class Event(timestamp: Long, state: String, source: String) 我正在转化为: case class TransformedEvent(timestamp: Long, state: String, source: String, is_finished: Boolean) 基本上,我在其他字段的基础上添加了一个字段“is\u finished”。
示例:is_finished=true if

state = "state1"
AND
source = "source1"

等。
为了更好的解释,下面是代码:

val events: Dataset[Event] = getEvents()

// Here is the transformation

val transformedEvents: Dataset[TransformedEvent] = events.map(e => convert(e))

// where the convert function is something like this

def convert(event: Event): TransformedEvent = {

    val isFinished = if(event.state == "state1" && event.source = "source1")

    TransformedEvent(timestamp = event.timestamp,
                     state = event.state,
                     source = event.source,
                     is_finished = isFinished)

}

我在想办法创造这样的条件 event.state == "state1" && event.source = "source1" 配置驱动,因为我将来可能必须添加/删除/更新这些,所以不希望每次发生这种情况时都对代码进行更改和部署。
有人能给我指出正确的方向吗?
提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题