Overview Version History Q & A Rating & Review
简介
随着客户需求的日益增长。用户对于UDF的需求量也越来越大。为方便广大DE同事能够快速高效的编写UDF项目及工程,也为了搭建一个UDF的项目共享平台。特提供此插件,有问题地方请issue.
innerJar
:内部插件,也是本插件的核心,安全起见只能通过内部git下载及更新。
vscode插件command
,vscode中一种命令模式,输入相应的命令执行相应的操作,类似于快捷键而又不是快捷键,[ctrl] / [command] + [shift] + [p] 呼出vscode的command的执行窗。
vscode插件 treeview
.vscode中一种交互展示形式,比如右侧的资源管理器中就是一个treeview.
项目脚手架
,一个项目的最初始化形态,包含一个最基础的项目结构配置。
功能
本插件支持依靠模版导出项目脚手架。
支持UDF编译
支持UDF一键发布(需要配置hive,hdfs等附属服务).
使用说明
基础配置说明
1. Auto Check New Version
建议勾选。注意此处的自动检查更新,是针对本插件中的innerJar插件做更新,本插件本身更新频率不会很高。
考虑到我们的模版市场需要非常频繁的更新,所以对于vscode插件我们作为一层交互外壳,真正的插件逻辑放在innerJar插件中,借助gitlab artifact与gitlab rest api就能实现通过vscode 对innerJar自动检查更新,方便innerJar及时更新
2. Beeline
UDF插件发布会使用到这个URL。
一键发布会讲打包好的插件jar上传只HDFS.
4. Hdfs User
5. Maven Home
6. Version
对于不同的集群版本,其实UDF的依赖是不同的。这里我们支持选择多个版本,从而使生成的脚手架中的依赖版本能够准确适配集群版本。
7. Version Server
innerJar插件更新的版本服务器。目前暂时为我司内部的gitlab服务器。
8. Version Token
innerJar 更新token.建议去gitlab生成一个自己的token.
9. Workspace Path
脚手架生成的项目存储路径。innerJar插件存储目录,
所以如果修改了workspace,最后是重新启动下vscode,方便innerJar重新加载
操作说明
1. 插件安装
点击visual code 左侧工具栏中的插件栏,搜索关键字UDF
即可找到我。
2. 插件更新
目前的架构将插件分为两部,
vscode插件部分:借助vscode插件市场更新,更新频率不会太高,且一般都会自动更新;
innerJar部分 借助gitlab rest api自动更新;
vscode
插件部分可以理解为整个项目的前端外壳,一般情况下非重大功能或需求,我们不会更新
innerJar
体积较大,并且其中包含部分内部代码,故而采取与vscode插件分离的方式,借助gitlab ci artifact 及 gitlab rest api在每次vscode启动时自动完成更新
innerJar中也包含了所有的可用的模版,并且有新的模版时我们会及时的更新.
1. 插件主体
1.1 command
1. **脚手架创建**
2. **编译UDF**
3. **发布UDF**
1.2 treeview
点击左侧的工具栏中的Slipstream UDF图标(如果没有图标,可能原因1.未安装插件;2.在左栏右键未勾选展示slipstream UDF
).
1.3 操作
1.3.1. 项目编译
点击编译UDF
,将对当前目录项目执行mvn install
命令。可以通过底部的panel实时查看相关的编译日志输出。
1.3.2. 项目发布
对于编译好的UDF项目,会在左侧的treeview中展示打包后的jar中所包含的所有UDF,在每个UDF项目右侧,点击发布
按钮,即可一键将UDF发布至server.
1.3.3. 测试类生成
1.3.4 创建UDF项目脚手架
点击UDF脚手架创建
,会弹出一个打开的标签页,其中包含了很多的脚手架模版。其中有模版的简介与模版变量简介,点击使用此模版,右侧将出现相应的表单区域,为模版填写好所有的脚手架变量属性后,点击使用xxxx创建脚手架
,即可自动生成脚手架项目。
模版
// 例如你的UDF模版中configMap有两个变量,则在模版文件中可以这样使用他们,
//****Main class
package ${packageName};
...
public class ${name}CommonUDFSuffix {
public static void main(String[] main) {
System.out.println( "current UDF name was : ${name},current packageName: ${packageName}");
}
}
<!--*****pom.xml-->
...
<groupId>${packageName}</groupId>
<artifactId>{name}</artifactId>
<version>1.0-SNAPSHOT</version>
...