请问,Flink如何将一个sql 脚本用yarn appllication 模式提交到集群?我尝试使用sql-client.sh 只能以seesion模式提交。
Apache Flink 提供了多种方式来提交作业到集群,包括通过命令行、REST API、以及 Flink SQL Client。如果你想要使用 SQL 脚本,并且想要以 YARN Application 模式提交到集群,你不能直接通过 sql-client.sh 以这种模式提交,因为 sql-client.sh 主要用于交互式 SQL 会话。
但是,你可以通过编写一个简单的 Java/Scala 程序来读取 SQL 脚本并执行它,然后通过 Flink 的命令行工具以 YARN Application 模式提交这个程序。以下是一个简化的步骤和示例代码:
要使用Apache Flink的SQL API并将SQL脚本以Application模式提交到YARN集群,你需要通过Flink的Table API & SQL的Java API来实现,而不是直接使用sql-client.sh脚本,因为sql-client.sh主要用于Session模式。以下是基本步骤:
准备工作
确保环境准备就绪:确保你的Flink版本支持Application模式,并且已正确配置了YARN环境。
编写Java程序:创建一个Java项目,引入Flink的相关依赖,特别是包含Table API和SQL的依赖。
步骤
1 构建Execution Environment: 首先,你需要创建一个StreamExecutionEnvironment或ExecutionEnvironment,然后转换为StreamTableEnvironment或TableEnvironment(对于批处理)。
2 注册Source和Sink: 根据你的SQL脚本需求,注册数据源(source)和接收器(sink)。例如,如果你的SQL涉及到读取Kafka数据并写入到另一个系统,你需要相应地注册Kafka connector和其他sink。
3 加载并执行SQL脚本: 你可以直接在Java代码中编写SQL查询,或者从文件加载SQL脚本并执行。
tEnv.executeSql("CREATE TABLE Orders (...)");
tEnv.executeSql("INSERT INTO Output SELECT ... FROM Orders WHERE ...");
或者从文件加载SQL:
4 以Application模式提交到YARN: 使用env.execute()方法提交作业时,指定一个唯一的作业名称,Flink会自动以Application模式提交到YARN。
env.execute("YourJobName");
打包与提交
将上述Java程序打包成JAR文件。
使用YARN的命令行工具提交这个JAR,指定主类和必要的参数。
yarn application -submit \
--class your.package.SqlJobSubmission \
--queue \
/path/to/your/jar/file.jar
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。