Apache flink 对于Flink v 1.10.1或更高版本,如何以编程方式编辑保存点元日期文件中的容器绝对路径?
我正在探索如何更改Flink保存点元数据文件中包含的绝对路径 我们正在寻找穿越AWS地区的flink流;但是,由于这条绝对路径,您可能会遇到问题。Flink文档暗示了这个问题,并建议使用SavepointV2Serializer编辑路径: 有人能帮我找出一个例子来说明如何做到这一点吗?我一直无法在网上找到参考资料 此外,尽管查看了_元数据文件,但我看到了一个绝对路径,但在生成的反序列化对象中没有找到对它的任何引用,也没有将其保存到序列化文件中 提前感谢您的指导 这是我写的主要文件:Apache flink 对于Flink v 1.10.1或更高版本,如何以编程方式编辑保存点元日期文件中的容器绝对路径?,apache-flink,Apache Flink,我正在探索如何更改Flink保存点元数据文件中包含的绝对路径 我们正在寻找穿越AWS地区的flink流;但是,由于这条绝对路径,您可能会遇到问题。Flink文档暗示了这个问题,并建议使用SavepointV2Serializer编辑路径: 有人能帮我找出一个例子来说明如何做到这一点吗?我一直无法在网上找到参考资料 此外,尽管查看了_元数据文件,但我看到了一个绝对路径,但在生成的反序列化对象中没有找到对它的任何引用,也没有将其保存到序列化文件中 提前感谢您的指导 这是我写的主要文件: objec
object Main extends App {
val meta = "src" / "main" / "resources" / "_metadata"
println( s"meta: ${meta.path}: ${meta.exists}" )
val contents = meta.contentAsString
println( contents )
// val serde1 = SavepointV1Serializer.INSTANCE
val serde2 = SavepointV2Serializer.INSTANCE
import scala.jdk.CollectionConverters._
val data = meta.inputStream() { in =>
val dis = new java.io.DataInputStream( in )
serde2.deserialize( dis, Thread.currentThread().getContextClassLoader )
}
println( s"META: ${data}" )
println( s"METADATA.version: ${data.getVersion}" )
println( s"METADATA.checkpointId: ${data.getCheckpointId}" )
println( s"METADATA.masterStates: ${Option( data.getMasterStates ).map( _.asScala.mkString( "[", ", ", "]" ) )}" )
println(
s"METADATA.operatorStates: ${Option( data.getOperatorStates ).map( _.asScala.mkString( "[", ", ", "]" ) )}"
)
println( s"METADATA.taskStates: ${Option( data.getTaskStates ).map( _.asScala.mkString( "[", ", ", "]" ) )}" )
val newMeta = "src" / "main" / "resources" / "_NEW_metedata"
val newData = new SavepointV2(
data.getCheckpointId,
Seq.empty[OperatorState].asJava,
data.getMasterStates
)
println( s"NEW_DATA:OpStates: ${newData.getOperatorStates}" )
newMeta.outputStream() { out =>
serde2.serialize( newData, new java.io.DataOutputStream( out ) )
}
}
基本问题实际上在Flink 1.11中得到了修复——请参阅——保存点现在可以重新定位,不再包含绝对路径。唯一的例外似乎是使用
GenericWriteAheadLog
sink
需要更新文档,请参阅
因此,如果您可以先升级到1.11.x,那么您应该能够避免该问题。感谢您提供有关1.11中修复程序的消息。但是,我们需要支持运行1.10至少六个月的客户。参考的文件提出了一种首选方法,但忽略了进一步阐述。任何演示如何编辑保存点路径的项目、文章等都会有所帮助。谢谢我不知道有什么有用的。我建议在flink用户邮件列表中询问。