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了

  • 相关阅读:
    70.BOM
    69.捕获错误try catch
    68.键盘事件
    523. Continuous Subarray Sum
    901. Online Stock Span
    547. Friend Circles
    162. Find Peak Element
    1008. Construct Binary Search Tree from Preorder Traversal
    889. Construct Binary Tree from Preorder and Postorder Traversal
    106. Construct Binary Tree from Inorder and Postorder Traversal
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14330576.html
Copyright © 2011-2022 走看看