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

请问Flink,如何将一个sql 脚本用yarn appllication 模式提交到集群?

请问Flink,如何将一个sql 脚本用yarn appllication 模式提交到集群?我尝试使用sql-client.sh 只能以seesion模式提交。

展开
收起
夹心789 2024-05-28 15:17:23 31 0
1 条回答
写回答
取消 提交回答
  • Apache Flink 提供了多种方式来提交作业到集群,包括通过 Flink CLI(命令行界面)、REST API、以及 Flink 客户端库。然而,直接使用 sql-client.sh 脚本通常是以会话模式启动 Flink SQL 客户端,并不直接支持以 YARN Application 模式提交 SQL 脚本。

    不过,你可以使用 Flink CLI 或者编写一个包装程序(如 Java/Scala 程序)来读取 SQL 脚本并以 YARN Application 模式提交作业。以下是一个使用 Flink CLI 提交 SQL 脚本到 YARN 集群的示例步骤:

    编写 SQL 脚本
    首先,你需要一个 SQL 脚本文件,比如 my_job.sql。image.png
    使用 Flink CLI 提交作业
    你不能直接使用 sql-client.sh 来以 YARN 模式提交 SQL 脚本,但你可以使用 Flink CLI 来提交一个包含 SQL 语句的 JAR 包。为此,你通常需要将 SQL 脚本转换为一个 Flink 作业(例如,通过 DataStream 或 DataSet API 编程,或者通过 Table API 和 SQL 的编程式 API),然后将其打包为一个 JAR 文件。

    但是,对于简单的 SQL 作业,你可以使用 Flink 提供的 SQL 客户端的编程式 API 来执行 SQL 语句,并将这些语句嵌入到你的 Java/Scala 程序中,然后编译并打包该程序为一个 JAR 文件。之后,你可以使用 Flink CLI 的 -m yarn-cluster 选项来提交这个 JAR 文件。

    然而,如果你只是想快速测试一下,并且你的 SQL 脚本不是很复杂,你可以考虑使用 Flink 的 SQL JAR 提交功能(如果 Flink 版本支持的话)。这通常涉及到将 SQL 脚本作为作业参数传递给 Flink JAR。但请注意,这并不是 Flink 的标准功能,可能需要额外的工具或插件。

    1. 使用 Flink CLI 提交 JAR 文件(示例)

    假设你已经有一个包含 SQL 逻辑的 JAR 文件(虽然这通常不是直接由 SQL 脚本生成的),你可以使用以下命令提交它到 YARN 集群:
    ./bin/flink run-yarn-application -m yarn-cluster -yn 2 -ys 1024 -ytm 1024 -c com.example.MyFlinkJob my-flink-job.jar --input-path hdfs://.../my_job.sql
    注意:-c 参数指定了 JAR 文件中的入口类,但在这个例子中,我们假设你有一个能够处理 SQL 脚本的自定义入口类。实际上,Flink 并不直接支持通过命令行参数传递 SQL 脚本文件。你需要编写代码来处理这个参数,并在你的 Flink 作业中执行 SQL 语句。

    1. 编写自定义程序处理 SQL 脚本

    如果你想要从 JAR 文件中读取并执行 SQL 脚本,你需要在你的 Java/Scala 程序中添加相应的逻辑。这通常涉及到读取文件、解析 SQL 语句,并使用 Flink 的 Table API 或 SQL Client API 来执行这些语句。这可能需要一些额外的编程工作。

    2024-06-25 14:18:40
    赞同 展开评论 打赏

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

相关产品

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

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