zoukankan      html  css  js  c++  java
  • Flink 源码(一):FLINK-SQL使用基础(10)Flink_sql_client1.10源码在IDEA中集成hive并运行

    来源:https://zhuanlan.zhihu.com/p/109832001

    1、IDEA配制

    1.1安装scala插件

    1.2 配制maven

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

    IntelliJ IDEA -> Preferences

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

    2、Maven配制

    有关maven的安装可以看

    这篇中maven安装的部分

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

    <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处:

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

    运行SqlClient.java:

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

    5、遇到的问题

    5.1 无效的标记

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

    5.2 与hive集成报错

    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' in
    the classpath.

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

  • 相关阅读:
    spring boot actuator监控需要注意的点
    spring boot actuator端点高级进阶metris指标详解、git配置详解、自定义扩展详解
    3、尚硅谷_SSM高级整合_创建Maven项目.avi
    elasticSearch插件metricbeat收集nginx的度量指标
    elasticSearch插件的安装以及使用nginx的modles收集nginx的日志
    服务治理平台微服务介绍
    skywalking面板功能介绍2
    skywalking中表字段的信息
    js总结33 :javascript-DOM节点属性
    js教程系列32 :javascript-DOM节点操作
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14330576.html
Copyright © 2011-2022 走看看