怎么用flink 1.11使sql客户端支持执行sql文件
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"怎么用flink 1.11使sql客户端支持执行sql文件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用flink 1.11
千家信息网最后更新 2025年12月03日怎么用flink 1.11使sql客户端支持执行sql文件
这篇文章主要讲解了"怎么用flink 1.11使sql客户端支持执行sql文件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用flink 1.11使sql客户端支持执行sql文件"吧!
背景
目前flink的sql客户端提供了一种交互式的sql查询服务,用户可以使用sql客户端执行一些sql的批任务或者流任务。但是当我想执行一些sql的定时任务时,flink却没有提供一个合适的方式,所以综合考虑了一下,我决定在sql的客户端基础上给加一个 '-filename (-f)' 参数,就像类似'hive -f abc.sql' 一样,可以执行一批sql任务。
源码修改
目前我只是想通过sql客户端执行一些批任务,再加上flink sql 客户端本身的一些设计,所以目前修改后的sql client 执行sql文件的时候支持 SET,DDL,INSERT INTO SELECT ...等语句,其他比如select暂不支持。
修改后执行的方式为:
/home/flink/bin/sql-client.sh embedded -f flink.sql
CliOptionsParser.java
在这个sql 客户端参数解析类里添加一个选项,用于解析-f参数。
public static final Option OPTION_FILENAME = Option
.builder("f")
.required(false)
.longOpt("filename")
.numberOfArgs(1)
.argName("the path of the sql file")
.desc("SQL from files")
.build(); CliOptions.java
在这里添加一个变量filename
private final String filename;
SqlClient.java
在SqlClient里添加对于-filename的处理
if (options.getUpdateStatement() != null){
// execute update statement
final boolean success = cli.submitUpdate(options.getUpdateStatement());
if (!success) {
throw new SqlClientException("Could not submit given SQL update statement to cluster.");
}
} else if (options.getFilename() != null){
final boolean success = cli.executeFile(options.getFilename());
if (!success) {
throw new SqlClientException("Could not submit given SQL file to cluster.");
}
} else {
cli.open();
} SqlClient#executeFile
添加具体的执行sql文件的方法,sql文件里的所有sql以分号切分,然后分别判断是什么类型,调用不同的方法来执行。
public boolean executeFile(String filename){
File file = new File(filename);
if (!file.exists()){
printError("the file do not exist");
return false;
} else {
String statement = null;
try {
statement = FileUtils.readFileToString(file);
} catch (IOException e){
printError("read the sql file error , " + e.getMessage());
return false;
}
String[] sqls = statement.split(";");
for (String sql : sqls){
if (sql == null || "".equals(sql.trim())){
continue;
}
final Optional parsedStatement = parseCommand(sql);
if (parsedStatement.isPresent()){
SqlCommandCall cmdCall = parsedStatement.get();
switch (cmdCall.command) {
case SET:
callSet(cmdCall);
break;
................
case INSERT_INTO:
case INSERT_OVERWRITE:
callInsert(cmdCall);
break;
case CREATE_TABLE:
callDdl(cmdCall.operands[0], CliStrings.MESSAGE_TABLE_CREATED);
break;
.....................
throw new SqlClientException("Unsupported command: " + cmdCall.command);
}
}
}
}
return true;
} 感谢各位的阅读,以上就是"怎么用flink 1.11使sql客户端支持执行sql文件"的内容了,经过本文的学习后,相信大家对怎么用flink 1.11使sql客户端支持执行sql文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
客户
客户端
文件
支持
任务
参数
学习
内容
方式
方法
不同
合适
交互式
分号
变量
只是
基础
就是
思路
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百度网络技术扣费
巨量引擎网络技术有限公司官网
数据库异常是什么原因是
地铁逃生服务器设置
网络安全大赛哪里看
江苏进口软件开发活动
数据库监控好牌子推荐
软件开发ppt的图片
饥荒本地联机服务器无响应
中国银行软件开发中心深圳
服务器管理口的功能吗
长沙网络安全国家
天堂w北美适合玩哪里的服务器
天津互联网科技学院
有哪些数据库可以搜索学位论文
银川网络安全作业
南通梵迪互联网科技有限公司
网络安全保密协议最新的范文
山东网络技术考什么
上海5g服务器机柜哪家好
db数据库用什么可以展绘
web服务器安全保障
网络安全博览会在哪里
云服务器远程桌面连接帐户
北京师范大学研究生管理服务器
派出所自身开展网络安全检查
周口网络技术参数
非关系数据库导入hadoop
网络安全年龄大了怎么办
贵阳互动博物馆软件开发