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)