确保集群安装Flink
使用版本1.12.1作为例子。
假定flink安装目录 /opt/flink
安装flink-sql-gateway
git 地址 ververica/flink-sql-gateway (github.com)
使用1.12分支,自行编译。
调整flink模式
vi /opt/flink/conf/flink-conf.yaml
增加配置 execution.target: yarn-per-job
设置flink环境变量
export FLINK_HOME=/opt/flink
启动sql gatway
使用beeline连接到sql gateway
SeeWei1985/flink-jdbc-driver (github.com)
可以直接下载
将这个jar包放到hive的lib下。
使用beeline命令
连接到sql gateway
之后,就可以使用sql命令来查看catalog,database,table等信息,以及使用sql语句。
支持哪些语句,参考 flink-sql-gateway的文档。
sql-gateway支持hive catalog设置
修改配置文件。注意下gateway启动的配置文件路径
设置hive的catalog
保存后,重启gateway,使用beeline再次连接,会提示错误。原因在于缺少jar包。
下载flink源码(注意版本对应)进行编译,编译完毕后,拷贝如下几个jar,原因在于flink默认不提供hive的connector,需要我们自己去编译(这里对flink的编译会出现问题,多google下)
将下列jar包复制到flink安装目录的lib下。
flink编译后的jar包如下:
{flink-home}/flink-connectors/flink-connector-hive/target/flink-connector-hive_2.11-1.9-SNAPSHOT.jar
{flink-home}/flink-connectors/flink-hadoop-compatibility/target/flink-hadoop-compatibility_2.11-1.9-SNAPSHOT.jar
hive本身有的jar包如下复制:
{hive-home}/lib/hive-exec-1.2.1.jar
{hive-home}/lib/hive-common-1.2.1.jar
{hive-home}/lib/hive-metastore-1.2.1.jar
{hive-home}/lib/hive-shims-common-1.2.1.jar
{hive-home}/lib/antlr-runtime-3.4.jar
{hive-home}/lib/datanucleus-api-jdo-3.2.6.jar
{hive-home}/lib/datanucleus-core-3.2.10.jar
{hive-home}/lib/datanucleus-rdbms-3.2.9.jar
{hive-home}/lib/mysql-connector-java-5.1.34.jar
{hive-home}/lib/javax.jdo-3.2.0-m3.jar
{hive-home}/lib/libfb303-0.9.3.jar
{hive-home}/lib/commons-cli-1.3.1.jar
这里,我们看到,只需要flink的两个包,因此,我们可以针对这连个jar包单独编译。
进入到对应的子模块执行
mvn clean package -DskipTests -am
等待中....
期间,编译遇到了问题,
javac-shaded-9+181-r4173-1.jar maven 403问题,不知原因,手动去下载,并使用下面的命令导入到本地的maven
mvn install:install-file -Dfile=javac-shaded-9+181-r4173-1.jar -DgroupId=com.google.errorprone -DartifactId=javac-shaded -Dversion=9+181-r4173-1 -Dpackaging=jar
之后,继续编译即可。
最终重启 sql gateway后,使用beeline连接上,通过show catalog 可以查看到hive的database,在hive中创建表,flink中也可以立刻识别到。