Flink 与 Hive 的磨合期

2020-07-13 00:00:00 查询 数据 执行 支持 笔者

文章整理:加米谷大数据

有不少读者反馈,参考上篇文章《Hive 终于等来了 Flink》部署 Flink 并集成 Hive 时,出现一些 bug 以及兼容性等问题。虽已等来,却未可用。所以笔者增加了这一篇文章,作为姊妹篇。

回顾

在上篇文章中,笔者使用的 CDH 版本为 5.16.2,其中 Hive 版本为 1.1.0(CDH 5.x 系列 Hive 版本都不高于 1.1.0,是不是不可理解),Flink 源代码本身对 Hive 1.1.0 版本兼容性不好,存在不少问题。为了兼容目前版本,笔者基于 CDH 5.16.2 环境,对 Flink 代码进行了修改,重新打包并部署。

其实经过很多开源项目的实战,比如 Apache Atlas,Apache Spark 等,Hive 1.2.x 和 Hive 1.1.x 在大部分情况下,替换一些 Jar 包,是可以解决兼容性的问题。对于笔者的环境来说,可以使用 Hive 1.2.1 版本的一些 Jar 包来代替 Hive 1.1.0 版本的 Jar 包。在本篇文章的开始部分,笔者会解决这个问题,然后再补充上篇文章缺少的实战内容。


剪不断理还乱的问题

根据读者的反馈,笔者将所有的问题总结为三类:

  1. Flink 如何连接 Hive 除了 API 外,有没有类似 spark-sql 命令
  2. 识别不到 Hadoop 环境或配置文件找不到
  3. 依赖包、类或方法找不到

1. Flink 如何连接 Hive


有的读者不太清楚,如何配置 Flink 连接 Hive 的 Catalog,这里补充一个完整的 conf/sql-client-hive.yaml 示例:

catalogs:
- name: staginghive
     type: hive
     hive-conf-dir: /etc/hive/conf
     hive-version: 1.2.1

execution:
  planner: blink
  type: batch
  time-characteristic: event-time
  periodic-watermarks-interval: 200
  result-mode: table
  max-table-result-rows: 1000000
  parallelism: 1
  max-parallelism: 128
  min-idle-state-retention: 0
  max-idle-state-retention: 0
  current-catalog: staginghive
  current-database: ssb
  restart-strategy:
    type: fallback

deployment:
  response-timeout: 5000
  gateway-address: ""
  gateway-port: 0
  m: yarn-cluster
  yn: 2
  ys: 5
  yjm: 1024
  ytm: 2048

相关文章