flink1.10连接hive1.1.0的填坑历程

最近有个项目,需要读取hive表中的数据写到Hbase中,正好flink1.10版本刚出来,而且支持连接hive,那就他了。

哪想到这才是噩梦的开始。确定了技术栈,就开始着手写代码,按照习惯,官网打开瞅一眼案例:

这是依赖:

依赖

这是代码:

code

是不是觉得太简单了,太天真了。

开始构建工程,添加依赖,修改地址,开始本地跑

exception

第一个,这个问题很明显是kerberos的问题,但是,我对Kerberos的问题一直很头疼,所以这个问题是同事解决的,给他点个赞。

加上关于kerberos的相关代码后,本地算是勉强调通了。

最终本地调试代码:

最终本地调试代码

本地可以了,上集群测试,先来个简单的脚本吧

shell

启动,报错

error

这个错误也很明确,你需要设置hadoop的配置文件的目录和依赖的目录(原因是flink从某版本(具体哪个版本记不清了)不再提供hadoop的依赖,所以需要手动添加,具体解决方案,在flink官网说的很清楚,传送门:https://ci.apache.org/projects/flink/flink-docs-release-1.10/ops/deployment/hadoop.html),好办,修改脚本

shell

重新启动,紧接着异常

exception

这个问题困惑了我好久,我知道是jar冲突,也知道是哪个jar包,但是不知道排除哪些依赖,后来晚上回家睡觉流程有捋了一下,才恍然大悟

我打包的时候,把flink-shaded-hadoop2的jar包打进了我的依赖中, 导致他和集群上hadoop的jar包冲突,只需要把这个包排掉就行

解决办法:上传集群时,去掉这个jar包

<dependency>

    <groupId>org.apache.flink</groupId>

    <artifactId>flink-shaded-hadoop-2-uber</artifactId>

    <version>2.6.5-8.0</version>

    <scope>${scope.flink.lib}</scope>

</dependency>

启动,又见异常:

exception

看到这个我心里有点数了,我导进来hadoop jar包和flink1.10的jar包冲突了,我懵逼了,这咋排??于是果断换个方案,下载flink-shaded-hadoop-2-uber-2.6.5-7.0.jar直接扔进flink/lib下,解决。

继续启动,异常又来:

exception

解决办法:

<dependency>

            <groupId>org.apache.hive</groupId>

            <artifactId>hive-exec</artifactId>

            <version>1.2.1</version>

            <exclusions>

                <exclusion>

                    <groupId>org.codehaus.janino</groupId>

                    <artifactId>janino</artifactId>

                </exclusion>

                <exclusion>

                    <groupId>org.codehaus.janino</groupId>

                    <artifactId>commons-compiler</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

紧接着,又报错,

exception

添加依赖:

<dependency>

    <groupId>org.apache.thrift</groupId>

    <artifactId>libfb303</artifactId>

    <version>0.9.2</version>

</dependency>

我以为就到此为止了吧,不,还有个绝的:

exception

看到这个异常,我都懵了。这是啥问题??心态有点崩,找了各种资料,最终终于知道问题所在:

我的hive是cdh版本的,但是我添加的hadoop依赖flink-shaded-hadoop2是apache的。

解决办法:添加依赖

<dependency>

    <groupId>org.apache.hadoop</groupId>

    <artifactId>hadoop-core</artifactId>

    <version>2.6.0-mr1-cdh5.8.0</version>

</dependency>

至此,我的任务终于跑起来了

result

看到结果,我倍感欣慰,这一路走来太不容易了,心态崩过好几次,幸好结果是好的。解决问题的过程虽然很痛苦,但是解决了问题后的感觉真的是超级棒!!

note:

flink连接hive处理流任务,读取hive表的数据时,即使加了limit的字段,也会将全表数据加载到state中,如果表很大,比如全量表,读起来会很慢,而且超级耗资源,慎用!!

但是,我想总会有解决的办法(有时间再更新)。期待flink对接hive越来越完善!!

贴出最终code和pom:

1
2
3

<properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <flink.version>1.10.0</flink.version>

    <scala.binary.version>2.11</scala.binary.version>

    <scala.version>2.11.12</scala.version>

    <hive.version>1.1.0-cdh5.8.0</hive.version>

    <scope.flink.lib>compile</scope.flink.lib> 

</properties>

<dependencies>

    <dependency>

        <groupId>org.apache.flink</groupId>

        <artifactId>flink-connector-hive_${scala.binary.version}</artifactId>

        <version>1.10.0</version>

    </dependency>

    <dependency>

        <groupId>org.apache.flink</groupId>

        <artifactId>flink-shaded-hadoop-2-uber</artifactId>

        <version>2.6.5-8.0</version>

        <scope>${scope.flink.lib}</scope>

    </dependency>

    <dependency>

        <groupId>org.apache.hadoop</groupId>

        <artifactId>hadoop-mapreduce-client-common</artifactId>

        <version>2.6.0-cdh5.8.0</version>

        <scope>${scope.flink.lib}</scope>

    </dependency>

    <dependency>

        <groupId>org.apache.hadoop</groupId>

        <artifactId>hadoop-core</artifactId>

        <version>2.6.0-mr1-cdh5.8.0</version>

    </dependency>

    <dependency>

        <groupId>org.apache.flink</groupId>

        <artifactId>flink-table-api-java-bridge_${scala.binary.version}</artifactId>

        <version>1.10.0</version>

        <scope>${scope.flink.lib}</scope>

    </dependency>

    <dependency>

        <groupId>org.apache.flink</groupId>

        <artifactId>flink-table-planner-blink_${scala.binary.version}</artifactId>

        <version>1.10.0</version>

        <scope>${scope.flink.lib}</scope>

    </dependency>

    <dependency>

        <groupId>org.apache.hive</groupId>

        <artifactId>hive-exec</artifactId>

        <version>${hive.version}</version>

        <exclusions>

            <exclusion>

                <groupId>org.codehaus.janino</groupId>

                <artifactId>janino</artifactId>

            </exclusion>

            <exclusion>

                <groupId>org.codehaus.janino</groupId>

                <artifactId>commons-compiler</artifactId>

            </exclusion>

        </exclusions>

    </dependency>

    <dependency>

        <groupId>org.projectlombok</groupId>

        <artifactId>lombok</artifactId>

        <version>1.16.18</version>

        <scope>${scope.flink.lib}</scope>

    </dependency>

    <dependency>

        <groupId>org.apache.thrift</groupId>

        <artifactId>libfb303</artifactId>

        <version>0.9.2</version>

    </dependency>

    <dependency>

        <groupId>org.apache.flink</groupId>

        <artifactId>flink-connector-kafka-0.11_${scala.binary.version}</artifactId>

        <version>${flink.version}</version>

        <exclusions>

            <exclusion>

                <artifactId>slf4j-api</artifactId>

                <groupId>org.slf4j</groupId>

            </exclusion>

            <exclusion>

                <artifactId>slf4j-log4j12</artifactId>

                <groupId>org.slf4j</groupId>

            </exclusion>

        </exclusions>

    </dependency>

</dependencies>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容