Flink 中的 Spark partitionBy 等价物?

Spark partitionBy equivalent in Flink?

我希望将流式数据写入基于分区的单独文件夹,如 Spark 中的 partitionBy

数据:

key1 1
key2 1
key1 2
key3 1
...

预期输出:

/output_directory/key1
+-- part-0-0
+-- part-0-1
+-- ...
/output_directory/key2
+-- part-0-0
+-- part-0-1
+-- ...
/output_directory/key3
+-- part-0-0
+-- part-0-1
+-- ...
...

(我在Flink中读到了stream splitting和custom sinks。但是前者似乎不适合预先不知道key的情况。至于custom sinks - 我想看看有没有在调查它们之前先找到其他出路。)

Flink是否有内置方法或第三方库来实现?

看看 Flink 的 FileSink, which you will want to use with a BucketAssigner,它根据键将流元素分配给桶。

有关详细信息,请参阅 https://ci.apache.org/projects/flink/flink-docs-stable/docs/connectors/datastream/file_sink/