前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flink_sql_client1.10源码在IDEA中集成hive并运行

Flink_sql_client1.10源码在IDEA中集成hive并运行

作者头像
数据仓库践行者
发布2020-04-18 00:06:47
1.3K0
发布2020-04-18 00:06:47
举报

最近一直在跟进flink_sql,为以后做更深入的了解做准备,这篇主要记录一下运行sql_client源码的过程~~

对于本文涉及到的hadoop,hive等相关环境,可以看上篇 flink_sql_client 1.10 与 hive集成 读取实时数据

【本文大纲】1、IDEA配制2、Maven配制3、导入sql_client源码4、集成hive配制并运行5、遇到的问题

1、IDEA配制

1.1安装scala插件

IntelliJ IDEA -> Preferences -> Plugins

如果上图,可以在Marketplace里搜索scala安装,这样可能会因为网速问题,安装失败。

我们还可以从本地硬盘安装,我的idea是2019.2版本的,提前下载好对应的scala插件:scala-intellij-bin-2019.2.40.zip,如果下图:

安装完重启就好了

1.2 配制maven

修改IDEA的maven为本地安装的maven:

IntelliJ IDEA -> Preferences

如上图,配制的目的,是为了让编译源码时用我们配制好的maven服务

2、Maven配制

有关maven的安装可以看 Hive源码系列(二)hive2.1.1源码编译并编译成eclipse项目 这篇中maven安装的部分

这块主要是修改maven的 settings.xml文件,将maven中央仓库换成阿里源,这样导入IDEA下载依赖包时,速度才能飞起来哦~~

代码语言:javascript
复制
 <mirrors>     <mirror>         <id>nexus-aliyun</id>         <mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf>         <name>Nexus aliyun</name>         <url>http://maven.aliyun.com/nexus/content/groups/public</url>     </mirror>
     <mirror>         <id>mapr-public</id>         <mirrorOf>mapr-releases</mirrorOf>         <name>mapr-releases</name>         <url>https://maven.aliyun.com/repository/mapr-public</url>     </mirror></mirrors>

3、导入sql_client源码

下载1.10源码包:flink-1.10.0-src.tgz

解压后放在自己准备好的目录下,我这边是放在 ~/IdeaProjects,这次主要导入flink-sql-client模块的代码:

File->open,选择flink-sql-client 打开

此时,idea会导入依赖包,稍等一下,在等待的过程中,你可以打开微信,搜索【数据仓库践行者】公众号,关注一波~~

导入完成之后,需要检查一下idea的jdk的设置,是不是自己本地装的jdk(File->Project Structure):

检查完build没有问题,下面我们就可以设置运行了

4、集成hive配制并运行

进行这一步,首先要保证集群的hadoop是正常运行的,hive也是正常可访问的

4.1 启动sql_client

sql_client的入口是SqlClient.java类,我们主要也是运行SqlClient.java的main方法,为该类运行配制一些参数:

Program arguments处只输入embedded,相当于执行 sql-client.sh embedded 命令

Environment variables处需要配制FLINK_CONF_DIR环境变量,指定flink配制文件目录,如果不配制,会因为读不到配制文件报错

运行SqlClient.java:

如上图,没有集成hive时,只有一个default_catalog

4.2 集成hive

主要是Program arguments处:

代码语言:javascript
复制

代码语言:javascript
复制
embedded -d /opt/soft/flink/conf/sql-client-hive.yaml -l /opt/soft/flink/lib## -d 指定sql-client yaml配制文件## -l 指定要加载的library jar包的路径
代码语言:javascript
复制

运行SqlClient.java:

由上图可以看到,可读取hive的库,在hive tmp库里建表test1后,用flink sql也能读到了

5、遇到的问题

5.1 无效的标记

这个原因主要是java版本不一致,解决办法 调出Maven侧边栏,取消勾选java11:

5.2 与hive集成报错
代码语言:javascript
复制
代码语言:javascript
复制
Exception in thread "main" org.apache.flink.table.client.SqlClientException: Unexpected exception. This is a bug. Please consider filing an issue.  at org.apache.flink.table.client.SqlClient.main(SqlClient.java:190)Caused by: org.apache.flink.table.client.gateway.SqlExecutionException: Could not create execution context.  at org.apache.flink.table.client.gateway.local.ExecutionContext$Builder.build(ExecutionContext.java:753)  at org.apache.flink.table.client.gateway.local.LocalExecutor.openSession(LocalExecutor.java:228)  at org.apache.flink.table.client.SqlClient.start(SqlClient.java:98)  at org.apache.flink.table.client.SqlClient.main(SqlClient.java:178)Caused by: org.apache.flink.table.api.NoMatchingTableFactoryException: Could not find a suitable table factory for 'org.apache.flink.table.factories.CatalogFactory' inthe classpath.
代码语言:javascript
复制

这个主要解决办法是在配制Program arguments时,加上 -l /opt/soft/flink/lib 参数,把相关依赖包加载就ok了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据仓库践行者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、IDEA配制
    • 1.1安装scala插件
      • 1.2 配制maven
        • 4.1 启动sql_client
        • 4.2 集成hive
        • 5.1 无效的标记
        • 5.2 与hive集成报错
    • 2、Maven配制
    • 3、导入sql_client源码
    • 4、集成hive配制并运行
    • 5、遇到的问题
    相关产品与服务
    大数据
    全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档