Flink Sql 读写操作 Kudu 使用bahir 编译 Flink Kudu Connector

前言:

近几年, KUDU 在大数据平台的应用越来越广泛,在 阿里、小米、网易 等公司的大数据架构中,KUDU 都有着不可替代的地位。作者在2016年开始了解KUDU,2017年正式在生产环境中使用,即使现如今ClickHouse、Doris、Hudi等优秀开源产品的出现,在技术架构选型的时候,实时数仓的部分场景我个人还是青睐使用:Kudu + Impala + Parquet 。

比较遗憾的是,到现在为止 Flink发布版本中还没有支持SQL读写Kudu,还好有第三方bahir可以编译 Flink Kudu Connector

后面提供已经编译好的包,恰好是相同版本的可以直接用了。

Bahir官站:

https://bahir.apache.org/docs/flink/current/flink-streaming-kudu/

一,环境准备

建议在Liunx环境下编译,有依赖包没找到windos版本:kudu-binary-1.10.0-linux-x86_64.jar

1.1 编译需要

git

jdk 1.8 (jdk自行安装)

maven 3

1.1.1 安装git

yum install git

 1.1.2  Liunx安装Maven

1. Maven官网下载

 2.  解压

tar -zxvf apache-maven-3.8.6-bin.tar.gz

3. 配置maven仓库,设置阿里镜像仓库

cd apache-maven-3.8.6

vim conf/settings.xml

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>

 设置仓库地址:/opt/mav

 4. 配置环境变量

vim /etc/profile

export MAVEN_HOME=/root/apache-maven-3.8.6
export PATH=$MAVEN_HOME/bin:$PATH

 5. 加载验证

source /etc/profile

mvn -version

 

1.2 软件版本 (官方目前支持到Flink 1.14.2)

具体根据自己版本修改后面代码pom

CDH 6.3.2

KUDU  1.10.0-cdh6.3.2

Flink 1.13.2

二,代码准备

1. 下载源码

https://github.com/apache/bahir-flink.git

2. 修改pom.xml

1 . cd bahir-flink-master

 2 . 修改父pom

vim pom.xml 

修改成自己的flink版本,scala版本注意修改,module只留flink-connector-kudu即可

        <!-- Flink version -->
        <flink.version>1.13.2</flink.version>
        <scala.binary.version>2.11</scala.binary.version>
        <scala.version>2.11.8</scala.version>

cdh的kudu 包下载不下来可以在父pom加一个CDH镜像 

进入父Pom,在repositories添加CDH镜像

        <repository>
             <id>cloudera</id>
             <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
        </repository>

3. 修改flink-connector-kudu 子模块的 pom

添加guava依赖:

<dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-shaded-guava</artifactId>
        <version>30.1.1-jre-14.0</version>
</dependency>

修改kudu 版本:

<properties>
    <kudu.version>1.10.0-cdh6.3.2</kudu.version>
</properties>

修改 kudu-binary 版本:

      <dependency>
        <groupId>org.apache.kudu</groupId>
        <artifactId>kudu-binary</artifactId>
        <version>1.10.0</version>
        <classifier>${os.detected.classifier}</classifier>
        <scope>test</scope>
      </dependency>

 三,执行编译

因为网络原因,中途可能下包会失败,重新执行几次

进入主目录:

/root/bahir-flink-master

执行编译:

mvn clean install -T 10 -DskipTests -Drat.skip=true

 

四,集群测试

1.将编译好的包放到 $FLINK_HOME/lib (每台机器)需要重启集群

cp flink-connector-kudu_2.11-1.2-SNAPSHOT.jar  $FLINK_HOME/lib

2.如遇如下报错,将flink-shaded-guava-30.1.1-jre-14.0.jar包放入到  $FLINK_HOME/lib下 
java.lang.ClassNotFoundException: org.apache.flink.shaded.guava30.com.google.common.collect.Lists

 免费下载链接:Flinksql依赖kudu包-flink文档类资源-CSDN下载

[INFO] Submitting SQL update statement to the cluster...
[ERROR] Could not execute SQL statement. Reason:
java.lang.ClassNotFoundException: org.apache.flink.shaded.guava30.com.google.common.collect.Lists

3. 如遇到  java.lang.ClassNotFoundException:org.apache.kudu.client.CreateTableOptions

将kudu clinet 相关包拷贝到 $FLINK_HOME/lib下 

cp /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/kudu/kudu-client*  $FLINK_HOME/lib/

[ERROR] Could not execute SQL statement. Reason:
java.lang.ClassNotFoundException: org.apache.kudu.client.CreateTableOptions

4. 如果遇到如下链接拒绝异常,看我上篇文章:CSDN

[INFO] Submitting SQL update statement to the cluster...
[ERROR] Could not execute SQL statement. Reason:
java.net.ConnectException: 拒绝连接

5,问题解决好后,启动sql-client

Flink SQL> CREATE TABLE kudu_test (
>  id                 string
> ,name            string
> ) WITH (
>   'connector.type' = 'kudu',
>   'kudu.masters' = 'datacenter4:7051',
>   'kudu.table' = 'impala::oms.ods_test',
>   'kudu.hash-columns' = 'id',
>   'kudu.primary-key-columns' = 'id'
> );
[INFO] Execute statement succeed.

执行插入

Flink SQL> insert into kudu_test select    
> '1' as id ,              
> 'a' as name   ;
[INFO] Submitting SQL update statement to the cluster...
[INFO] SQL update statement has been successfully submitted to the cluster:
Job ID: 23fd7ae0c26ba43d87308f0599c6db6b

查看数据:数据1,a插入成功

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值