flink-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jack <jack-kn...@marmelandia.com>
Subject Immutable data
Date Wed, 23 Sep 2015 11:29:03 GMT
Hi,

I'm having trouble integrating existing Scala code with Flink, due to POJO-only requirement.


We're using AnyVal heavily for type safety, and immutable classes as a default. For example,
the following does not work:

object Test {
  class Id(val underlying: Int) extends AnyVal

  class X(var id: Id) {
    def this() { this(new Id(0)) } 
  }

  class MySource extends SourceFunction[X] {
    def run(ctx: SourceFunction.SourceContext[X]) {
      ctx.collect(new X(new Id(1)))
    }
    def cancel() {}
  }

  def main(args: Array[String]) {
    val env = StreamExecutionContext.getExecutionContext
    env.addSource(new MySource).print
    env.execute("Test")
  }
}

Currently I'm thinking that I would need to have duplicate classes and code for Flint and
for non-Flint code, or somehow use immutable interfaces for non-Flint code. Both ways are
expensive in terms of development time. 

Would you have any guidance on how to integrate Flink with a code base that has immutability
as a norm?

Thanks
Mime
View raw message