开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flinkSQLclient创建的job,flink重启就没了,有什么办法吗?

flinkSQLclient创建的job,flink重启就没了,有什么办法吗?

展开
收起
游客3oewgrzrf6o5c 2022-07-20 10:23:37 1106 0
1 条回答
写回答
取消 提交回答
  • 全栈JAVA领域创作者

    如果使用Flink SQL客户端创建的Job在Flink重启后消失了,可能是因为该Job被放置在了缓存中,而Flink在重启时会清除缓存中的Job。为了避免这种情况发生,可以将Job保存到文件中,以便在Flink重启后仍然可以恢复该Job。
    具体做法如下:

    在Flink Job代码中使用“saveAsTable”语句将Job保存到文件中,例如:

    CREATE TABLE output_table (
      id INT,
      name STRING,
      age INT
    ) WITH (
      'connector' = 'filesystem',
      'path' = '/path/to/output',
      'format' = 'csv'
    );
    

    其中,path为保存Job的文件路径。

    在Flink Job代码中使用“saveAsTable”语句将Job保存到数据库中,例如:

    CREATE TABLE output_table (
      id INT,
      name STRING,
      age INT
    ) WITH (
      'connector' = 'jdbc',
      'url' = 'jdbc:mysql://localhost:3306/mydb',
      'username' = 'root',
      'password' = 'password',
      'query' = 'SELECT * FROM output_table'
    );
    

    其中,url为数据库连接的URL,username和password为数据库连接的用户名和密码。
    需要注意的是,将Job保存到文件中会占用磁盘空间,而将Job保存到数据库中会增加Job的运行时开销。因此,在保存Job时需要根据实际情况进行选择。另外,如果使用的是Flink自带的文件存储解析器,那么需要在Flink Job代码中指定文件存储解析器的版本,例如:

    Configuration config = new Configuration();
    config.setString("dataformat.fileformat.version", "1.5.0");
    FileIOFactory factory = new FileIOFactory(config, new StringDeserializer(), new StringDeserializer());
    

    这样就可以将Job保存到文件中了。

    2023-07-29 20:09:17
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载