Flink 1.11:流批一体 Hive 数仓( 二 )


Hive Dialect 目前所支持的具体功能可以参考 FLIP-123 或 Flink 的官方文档 。 另外 , 该功能的一些设计原则和使用注意事项如下:

  1. Hive Dialect 只能用于操作 Hive 表 , 而不是 Flink 原生的表(如 Kafka、ES 的表) , 这也意味着 Hive Dialect 需要配合 HiveCatalog 使用 。
  2. 使用 Hive Dialect 时 , 原有的 Flink 的一些语法可能会无法使用(例如 Flink 定义的类型别名) , 在需要使用 Flink 语法时可以动态切换到默认的 Dialect 。
  3. Hive Dialect 的 DDL 语法定义基于 Hive 的官方文档 , 而不同 Hive 版本之间语法可能会有轻微的差异 , 需要用户进行一定的调整 。
  4. Hive Dialect 的语法实现基于 Calcite , 而 Calcite 与 Hive 有不同的保留关键字 。 因此 , 某些在 Hive 中可以直接作为标识符的关键字(如 “default” ) , 在Hive Dialect 中可能需要用“`”进行转义 。
2、向量化读取
Flink 1.10中 , Flink 已经支持了 ORC (Hive 2+) 的向量化读取支持 , 但是这很局限 , 为此 , Flink 1.11 增加了更多的向量化支持:
  • ORC for Hive
  • Parquet for Hive 1,2,3
也就是说已经补全了所有版本的 Parquet 和 ORC 向量化支持 , 默认是开启的 , 提供开关 。
3、简化 Hive 依赖
Flink 1.10 中 , Flink 文档中列出了所需的 Hive 相关依赖 , 推荐用户自行下载 。 但是这仍然稍显麻烦 , 所以在1.11 中 , Flink 提供了内置的依赖支持 :
  • flink-sql-connector-hive-1.2.2_2.11-1.11.jar:Hive 1 的依赖版本 。
  • flink-sql-connector-hive-2.2.0_2.11-1.11.jar:Hive 2.0 - 2.2 的依赖版本 。
  • flink-sql-connector-hive-2.3.6_2.11-1.11.jar:Hive 2.3 的依赖版本 。
  • flink-sql-connector-hive-3.1.2_2.11-1.11.jar:Hive 3 的依赖版本 。
现在 , 你只需要单独下一个包 , 再搞定 HADOOP_CLASSPATH , 即可运行 Flink on Hive 。
最后感谢您的阅读 , 如果喜欢本文欢迎关注和转发 , 本头条号将坚持持续分享IT技术知识 。 对于文章内容有其他想法或意见建议等 , 欢迎提出共同讨论共同进步 。