(1)Flink SQL Client介绍
SQL 客户端 的目的是提供一种简单的方式来编写、调试和提交表程序到 Flink 集群上,而无需写一行 Java 或 Scala 代码。SQL 客户端命令行界面(CLI) 能够在命令行中检索和可视化分布式应用中实时产生的结果。
Flink SQL Client架构
SQL Client可视化模式
CLI 为维护和可视化结果提供三种模式。
表格模式(table mode) 在内存中实体化结果,并将结果用规则的分页表格可视化展示出来。执行如下命令启用:
SET execution.result-mode=table;
变更日志模式(changelog mode) 不会实体化和可视化结果,而是由插入(+)和撤销(-)组成的持续查询产生结果流。
SET execution.result-mode=changelog;
Tableau模式(tableau mode) 更接近传统的数据库,会将执行的结果以制表的形式直接打在屏幕之上。具体显示的内容会取决于作业 执行模式的不同(execution.type):
SET execution.result-mode=tableau;
(2)解决Hive的坑
在配置HiveCatalog之前需要确保hive的安装,见博客:
https://blog.csdn.net/weixin_45366499/article/details/107299478
hive安装完成之后要启动hive metastore
bin/hive --service metastore
在启动的同时会出现两处问题,没有请跳过!
第一个坑:
Caused by: MetaException(message:Version information not found in metastore. )
解决方法:
修改 conf/hive-site.xml 中的 “hive.metastore.schema.verification”改为 false
<property> <name>hive.metastore.schema.verification</name> <value>false</value> </property>
第二个坑:
Caused by: MetaException(message:Required table missing : "`DBS`" in Catalog "" Schema "".
解决方法:
在conf下的hive-site.xml添加
<property> <name>datanucleus.schema.autoCreateAll</name> <value>true</value> </property>
没有问题之后即hive的metastore启动成功!
(3)配置Hive与Flink的集成
在配置HiveCatalog之前要先确保Hive与Flink的集成没有问题!
第一步:配置HADOOP_CLASSPATH,需要在/etc/profile文件中配置如下的环境变量
export HADOOP_CLASSPATH=`hadoop classpath`
第二步:将hive的jar包复制到flink的lib目录下
flink-connector-hive_2.11-1.12.1.jar
hive-exec-2.3.4.jar
flink-connector-hive_2.11-1.12.1.jar这个包在maven仓库下载:
https://mvnrepository.com/artifact/org.apache.flink/flink-connector-hive_2.11/1.12.1
(4)配置HiveCatalog
配置sql-client-defaults.yaml,修改catalogs,需要更改两个地方
第一个地方:
catalogs: # empty list # A typical catalog definition looks like: - name: myhive type: hive hive-conf-dir: /opt/modules/hive/conf default-database: flink hive-version: 2.3.4
注意要把[ ]这个中括号去掉
第二个地方:
(5)启动测试
启动Flink集群:
bin/start-cluster.sh
启动Hadoop集群
start-all.sh
启动hive metastore(重要)
bin/hive --service metastore
最后启动SQL client
bin/sql-client.sh embedded
到这里可能还会出现一个问题,没有请跳过!
Caused by: java.lang.IllegalArgumentException: Embedded metastore is not allowed. Make sure you have set a valid valu
解决方法:在hive-site.xml下配置
<property> <name>hive.metastore.uris</name> <value>thrift://bigdata-pro-m07:9083</value> </property>
经过种种挫折最终测试成功,但并不意味着所有的坑都已经踩完