前言
最近空闲时间准备看一下flink sql&table模块,发现flink提供了sql client来直接进行交互式查询。体验了sql client的基本功能后准备去操作hive,kafka等数据源,但是在操作连接hive时就出现了相关问题,在此记录一下。本地使用软件的相关版本为flink1.12.3,hive2.1.0,hadoop2.7.3
连接准备
1.检查版本
由于flink和hive的版本过多,flink支持hive的版本也有限

2.下载依赖
根据本地flink和hive的版本,下载对应的依赖包。
参考网上资料和版本对应关系,flink sql client连接hive需要用到3个依赖jar包,分别为flink-connector-hive_2.11-1.12.3.jar,hive-exec-2.1.0.jar,flink-sql-connector-hive-2.2.0_2.11-1.12.3.jar。将其放到flink按照目录的lib/目录下

3.准备hive配置
在flink安装目录的conf目录下,新建hive.yaml文件,添加hive相关配置项。
name可以随便定义,type参数必须为hive
4.启动flink和flink sql client
在flink安装目录的bin/目录下,启动flink和flink sql client。
由于我没有使用默认的配置文件,启动时需要指定配置文件
用命令 ./sql-client.sh embedded -d …/conf/hive.yaml启动sql-client
5.通过命令连接访问hive

简单查询hive表

问题汇总
1.Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
问题描述:在启动sql-client时,获取不到hadoop相关的方法
解决:在/etc/profile中配置HADOOP_CLASSPATH,HADOOP_CLASSPATH的值为hadoop相关jar包的路径
export HADOOP_CLASSPATH=/usr/hdp/2.6.5.0-292/slider/lib/*
我这里加了通配符,修改完要source生效
2.[ERROR] Could not execute SQL statement. Reason:
org.apache.flink.table.client.gateway.SqlExecutionException: Results of batch queries can only be served in table or tableau mode.
问题描述:使用select * from table limit 10查询时,出现该错误。flink在获取批量查询结果时,需要用到表格展示模式。
解决:可以在sql命令行设置展示模式
SET execution.result-mode=table; 表格模式
SET execution.result-mode=tableau; tableau模式,更接近传统的数据库
3.[ERROR] Could not execute SQL statement. Reason:
org.apache.flink.table.api.TableException: Stream Tables can only be emitted by AppendStreamTableSink, RetractStreamTableSink, or UpsertStreamTableSink.
问题描述:使用select * from table limit 10查询时,出现该错误,目前 HiveTableSink 不支持流式写入(未实现 AppendStreamTableSink)。需要将执行模式改成 batch模式,否则会出现错误
解决:修改连接hive配置文件hive.yaml,添加execution配置。将type配置为batch

4.[ERROR] Could not execute SQL statement. Reason:
java.lang.ClassNotFoundException: org.apache.flink.connectors.hive.HiveSource
问题描述:使用select * from table limit 10查询时,出现该错误。
解决:出现这个问题好像是因为jar包冲突,flink-sql-connector-hive与flink-connector-hive,hive-exec冲突,移除掉flink-sql-connector-hive-2.2.0_2.11-1.12.3.jar
总结:纸上得来终觉浅,绝知此事要躬行。初次接触flink sql client遇到这些问题,所以要自己踩一遍坑,才会对知识有宽泛的认知和更深的理解。后续会继续深入,慢慢踩坑!

作者在体验Flink SQL Client基本功能后操作连接Hive时遇到问题并记录。介绍了连接准备工作,包括检查版本、下载依赖、准备Hive配置等,还汇总了启动和查询时出现的多个问题及解决办法,如配置HADOOP_CLASSPATH、设置展示模式等。

2335

被折叠的 条评论
为什么被折叠?



