我正在将Kafka数据流写入HDFS路径中的存储区。 Kafka给出字符串数据。使用FlinkKafkaConsumer010从Kafka消费
-rw-r--r-- 3 ubuntu supergroup 4097694 2018-10-19 19:16 /streaming/2018-10-19--19/_part-0-1.in-progress
-rw-r--r-- 3 ubuntu supergroup 3890083 2018-10-19 19:16 /streaming/2018-10-19--19/_part-1-1.in-progress
-rw-r--r-- 3 ubuntu supergroup 3910767 2018-10-19 19:16 /streaming/2018-10-19--19/_part-2-1.in-progress
-rw-r--r-- 3 ubuntu supergroup 4053052 2018-10-19 19:16 /streaming/2018-10-19--19/_part-3-1.in-progress
仅当我使用某些映射功能来动态操纵流数据时,才会发生这种情况。如果我直接将流写入HDFS,则可以正常工作。知道为什么会这样吗?我正在使用Flink 1.6.1,Hadoop 3.1.1和Oracle JDK1.8
最佳答案
这个问题有点晚了,但是我也遇到了类似的问题。
我有一个案例类地址
case class Address(val i: Int)
例如,我从集合中读取了带有地址数的来源
env.fromCollection(Seq(new Address(...), ...))
...
val customAvroFileSink = StreamingFileSink
.forBulkFormat(
new Path("/tmp/data/"),
ParquetAvroWriters.forReflectRecord(classOf[Address]))
.build()
...
xxx.addSink(customAvroFileSink)
启用检查点后,我的 Parquet 文件也将以进行中的状态结束
我发现Flink在触发检查点之前完成了该过程,因此我的结果从未完全刷新到磁盘上。在将检查点间隔更改为较小的数字后, Parquet 不再进行中。