关键点:
- Flink与Hive结合使用,使用的是Flink引擎作为查询引擎
- Hive 的 Metastore 作为Flink建表DDL的存储,只需要建立一次表,之后可以直接使用
- 可以使用Flink的STREAMING 模式从 Hive 读取数据,作为一个解耦写入hive的查询方式
概览
Apache Hive 已将自己确立为数据仓库生态系统的焦点。 它不仅作为大数据分析和 ETL 的 SQL 引擎,而且还是一个数据管理平台,在此发现、定义和发展数据。
Flink 提供了与 Hive 的双重集成。
第一个是利用 Hive 的 Metastore 作为一个持久目录和 Flink 的 HiveCatalog 来跨会话存储 Flink 特定的元数据。 例如,用户可以使用 HiveCatalog 将他们的 Kafka 或 ElasticSearch 表存储在 Hive Metastore 中,然后在 SQL 查询中重用它们。
第二个是提供 Flink 作为读写 Hive 表的替代引擎。
HiveCatalog 设计为与现有 Hive 安装“开箱即用”兼容。 您无需修改现有 Hive Metastore 或更改表的数据放置或分区。
HiveCatalog
使用 HiveCatalog,Apache Flink 可用于 Apache Hive Tables 的统一 BATCH 和 STREAM 处理。 这意味着 Flink 可以用作 Hive 批处理引擎的性能更高的替代品,或者连续读写 Hive 表中的数据以支持实时数据仓库应用程序。
读取
Flink 支持以 BATCH 和 STREAMING 模式从 Hive 读取数据。 当作为 BATCH 应用程序运行时,Flink 将在执行查询的时间点对表的状态执行查询。 STREAMING 读取将持续监控表并在新数据可用时增量获取它。 Flink 会默认读取有界的表。
STREAMING 读取支持使用分区表和非分区表。 对于分区表,Flink 会监控新分区的生成,并在可用时增量读取。 对于非分区表,Flink 会监控文件夹中新文件的生成,增量读取新文件。