Till Rohrmann created FLINK-16684:
-------------------------------------

             Summary: StreamingFileSink builder does not work with Scala
                 Key: FLINK-16684
                 URL: https://issues.apache.org/jira/browse/FLINK-16684
             Project: Flink
          Issue Type: Bug
          Components: API / Scala, Connectors / FileSystem
    Affects Versions: 1.10.0
            Reporter: Till Rohrmann
             Fix For: 1.10.1, 1.11.0


The {{StreamingFileSink}} builders don't work with Scala as they lose with 
every {{with*}} method more type information. For example, the following 
example does not compile:

{code}
val sink = StreamingFileSink.forRowFormat(new Path("s3a://123"), new 
Encoder[String] {
      override def encode(element: String, stream: OutputStream): Unit = ???
    }).withRollingPolicy(
      DefaultRollingPolicy.builder()
        .withRolloverInterval(TimeUnit.MINUTES.toMinutes(5))
        .withInactivityInterval(TimeUnit.MINUTES.toMinutes(5))
        .withMaxPartSize(128 * 1024 * 1024)
        .build()
    ).withBucketAssigner(
      new BucketAssigner[String, String] {
        override def getBucketId(element: String, context: 
BucketAssigner.Context): String = ???
        override def getSerializer: SimpleVersionedSerializer[String] = ???
      }
    ).build();
{code}

The problem seems to be that Scala does type inference slightly differently 
than Java. I believe that the unspecified {{RowFormatBuilder}} type cannot be 
properly resolved.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to