Apache flink 对于Flink v 1.10.1或更高版本,如何以编程方式编辑保存点元日期文件中的容器绝对路径?

Apache flink 对于Flink v 1.10.1或更高版本,如何以编程方式编辑保存点元日期文件中的容器绝对路径?,apache-flink,Apache Flink,我正在探索如何更改Flink保存点元数据文件中包含的绝对路径 我们正在寻找穿越AWS地区的flink流;但是,由于这条绝对路径,您可能会遇到问题。Flink文档暗示了这个问题,并建议使用SavepointV2Serializer编辑路径: 有人能帮我找出一个例子来说明如何做到这一点吗?我一直无法在网上找到参考资料 此外,尽管查看了_元数据文件,但我看到了一个绝对路径,但在生成的反序列化对象中没有找到对它的任何引用,也没有将其保存到序列化文件中 提前感谢您的指导 这是我写的主要文件: objec

我正在探索如何更改Flink保存点元数据文件中包含的绝对路径

我们正在寻找穿越AWS地区的flink流;但是,由于这条绝对路径,您可能会遇到问题。Flink文档暗示了这个问题,并建议使用SavepointV2Serializer编辑路径:

有人能帮我找出一个例子来说明如何做到这一点吗?我一直无法在网上找到参考资料

此外,尽管查看了_元数据文件,但我看到了一个绝对路径,但在生成的反序列化对象中没有找到对它的任何引用,也没有将其保存到序列化文件中

提前感谢您的指导

这是我写的主要文件:

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用户邮件列表中询问。