怎么用flink 1.11使sql客户端支持执行sql文件
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,这篇文章主要讲解了"怎么用flink 1.11使sql客户端支持执行sql文件",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用flink 1.11
千家信息网最后更新 2025年01月30日怎么用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安全错误
数据库的锁怎样保障安全
基础网络安全攻防技术
国内外列车网络技术现状
漳州市网络安全平台
江苏在线网络技术服务口碑推荐
小公司软件开发服务
友好的数据库管理
网络安全安阳市中医院
济南技师学院计算机网络技术
翻牌机数据库
灌南选择网络技术排名靠前
switch 云服务器
公安机关网络安全管辖
杭州车载网络技术服务
中国网络安全周启动
谷歌软件开发自带的安卓模拟器
无锡高品质服务器价格咨询
社会该怎么对网络安全问题
所有人这份网络安全小贴士请收好
数据库在线文件管理
静安区网络软件开发服务报价表
网络安全意思淡薄
网络安全教育的必要性和方式
游戏不同服务器
优炫数据库安全管理
阿里云数据库如何下载
vs测试连接数据库
设计销售订单表数据库
网络安全手绘画
公安部网络安全教育平台登录
网络安全知识竞赛 新闻稿