[英]Filter Flink tuples
我正在编写一个使用Flink在Scala中进行流处理的程序。 我有一个数据流,我首先将其映射到包含json4s JValues的元组。 现在,我想基于这些JValue过滤这些元组。 我以为这很简单,但是找不到如何通过Flink元组的列过滤的好例子。 有谁知道如何做到这一点? 谢谢
除了映射到元组,您还可以映射到案例类并过滤掉不需要的内容:
// StreamingJob.scala
...
val filteredEvents = content
.map(x => Event.toCaseClass(x))
.filter(x => x.value == true)
...
// Event.scala
case class Event(
id: String,
value: Int,
)
object Event {
implicit val formats = DefaultFormats
def toCaseClass(str: String) =
parse(str).extract[Event]
}
这个问题对我来说似乎太不确定了,但是也许不行吗?
// stream contains stuff like these in a flink tuple
//(custom deserializer of array to tuple2???)
val jsonExample = """["foo", "bar"]"""
val stream: DataStream[Tuple2[JString, JString]] = ???
val filteredStream = stream.filter(x => x.getField(0).extract[String] == "foo")
同上,如果您正在编写scala,最好不要使用flink元组。 去案例类或至少scala元组?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.