想在DataGrip里写SQL般丝滑的写FlinkSQL?安装它就完事儿了

版本 日期 备注
1.0 2023.8.8 文章首发

本文首发于泊浮目的掘金:juejin.cn/user/146860...

"FlinkSQL对于大数据开发者们来说是一个很常见的API,它的存在巨幅提升了开发效率,使开发者不用再面向底层细节,可以更加专注于自己的业务。"我在刚开始写FlinkSQL时,留下了这样的印象。

随着我越来越频繁的使用FlinkSQL,我发现了一个问题------FlinkSQL的确很好用,它和标准的SQL差别不大,但写起来明显没有在DataGrip里写SQL来得快乐:如果有一个类似DataGrip的工具,开发FlinkSQL的效率可以更高。问了身边一圈同事,发现大家都没有趁手的工具。

从DataGrip的官网(www.jetbrains.com/datagrip/)上可以看到,它的功能非常齐全,的确是一款值得付费的工具。从它的页面上了解关于编辑属性的功能,我认为有几点是可以有效提升体验的:

  1. 代码高亮:关键字和自定义的一些标识符都一个颜色,看起来真的好难受。一些常见的IDE里都会把他们区别开来。
  2. 代码提示补全:对于一些关键字,只要输入前缀,就可以选择补全,有效减少输入量与开发者脑部负担。
  3. 语法错误提示与建议修复:在写错code时及时给出提示,尽早修复问题,避免拖到runtime。
  4. 指定字符重构:使用频率不高,但是用到时有这个功能就很爽------对于同一个alias做全文rename,如果没有的话一个个去改会非常痛苦。

基于上述情况,我阅读了IDEA和VS Code的开发者文档,考虑到实现工作量,先开发了一款名为Flink SQL Helper的VS Code插件,希望这款插件能够让开发者们高效、专注地完成FlinkSQL的开发。地址:marketplace.visualstudio.com/items?itemN...。下面我们一起来看一下这个插件结合VS Code实现的相关功能。

1. 功能介绍

代码高亮属于基本操作,不再特意描述。并且支持配置来调整颜色(见2.1 Color theme recommend)。

1.1 代码补全

根据关键字以及上下文,可以及时给到建议做代码补全。

有些语句总是想复制?我们还有snippets

在FlinkSQL or SQL里,有些语法并没有这么好记住。于是在日常开发中写这样的语句我们往往会去复制粘贴,针对这点,我提供了snippets。只要输入关键字,就可以打出模版代码,让开发者专注在编写Flink SQL上。

1.2 语法错误提示

错误提示是个很重要的功能,让错误尽早地被发现可以有效提升开发效率 ------举个例子,当我们的Flink SQL比较长时,拉起来就要耗一些时间,等startup的时候错误才会报出来。如果错误有好几个,那么每次startup只会检查出一个,通过这样的方式来排错特别耗时。在这个插件中,写完Flink SQL只要保存一下,插件就会做一次语法检测,如果有问题就会在右下方提示。

1.3 重构

临时视图,source、sink表的重命名都可以用它来解决。

1.4 发现文件中所有的引用处

这个功能在我们阅读代码时会特别实用。查看某些标识符被引用的地方,并快速跳转。

1.5 直接运行代码

VS Code虽然是一款编辑器,但完全可以通过定制、安装插件的方式来将其打造成一个IDE。根据code.visualstudio.com/docs/java/j...的配置,我们可以让FlinkSQL相关在VS Code里跑起来,实现一体化高效开发。

2. 使用方法

介绍了一轮功能,那么如何获取并使用这个插件呢?

  1. 下载一个VS Code。
  2. 在插件栏中搜索"Flink",可以看到...,点击安装。
  3. 除了语法错误提示,其他功能都是开箱即用的。如果想使用语法错误提示功能,需要打开设置(见下),并将保存方式改为手动保存,以获取较好的体验------语法检查会在保存时触发。

3. 结语

以上内容为Flink SQL Checker on VS Code v1.9.x版本的主要功能。如果大家有任何建议或者需求、问题反馈,可以在Github的Issue(github.com/camilesing/...)中反馈,我看到后会第一时间回复。也欢迎各路大神一起参与开发,打造更好的插件。

相关推荐
华农DrLai2 小时前
Spark SQL Catalyst 优化器详解
大数据·hive·sql·flink·spark
岁岁种桃花儿2 小时前
Flink从入门到上天系列第一篇:搭建第一个Flink程序
大数据·linux·flink·数据同步
Hello.Reader11 小时前
Flink ZooKeeper HA 实战原理、必配项、Kerberos、安全与稳定性调优
安全·zookeeper·flink
Hello.Reader15 小时前
Flink 使用 Amazon S3 读写、Checkpoint、插件选择与性能优化
大数据·flink
Hello.Reader16 小时前
Flink 对接 Google Cloud Storage(GCS)读写、Checkpoint、插件安装与生产配置指南
大数据·flink
Hello.Reader16 小时前
Flink Kubernetes HA(高可用)实战原理、前置条件、配置项与数据保留机制
贪心算法·flink·kubernetes
wending-Y17 小时前
记录一次排查Flink一直重启的问题
大数据·flink
Hello.Reader18 小时前
Flink 对接 Azure Blob Storage / ADLS Gen2:wasb:// 与 abfs://(读写、Checkpoint、插件与认证)
flink·flask·azure
Hello.Reader19 小时前
Flink 文件系统通用配置默认文件系统与连接数限制实战
vue.js·flink·npm
Hello.Reader1 天前
Flink Plugins 机制隔离 ClassLoader、目录结构、FileSystem/Metric Reporter 实战与避坑
大数据·flink