我有一个用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"
配置驱动,因为我将来可能必须添加/删除/更新这些,所以不希望每次发生这种情况时都对代码进行更改和部署。
有人能给我指出正确的方向吗?
提前谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!