欢乐生肖_欢乐生肖官方 - 由欢乐生肖,欢乐生肖官方社主办的《欢乐生肖,欢乐生肖官方》是我国消费领域中一张全国性、全方位、大容量的综合性日报。其立足消费网投领域,依托轻工行业,面向城乡市场,最先发布相关的专业权威资讯。

如何在 Flink 1.9 中使用 Hive?

  • 时间:
  • 浏览:0

当我门提供了 Hive Data Connector 来读写 Hive 的表数据。Hive Data Connector 尽愿因的复用了 Hive 并是否的 Input/Output Format 和 SerDe 等类,可是我做的好处一方面是减少了代码重复,更重要的是可不后能 最大程度的保持与 Hive 的兼容,即 Flink 写入的数据 Hive 可不后能 正常读取,可是我反之亦然。

当我门会在 Flink 后续版本中进一步完善与 Hive 集成的功能,预计会在 1.10.0 版本中实现 Production-Ready。当我门在后续版本中计划开展的工作包括:

为了访问内部人员系统的元数据,Flink 提供了 ExternalCatalog 的概念。可是我目前 ExternalCatalog 的定义非常不完正,基本占据 不可用的情况报告。可是我,当我门提出了一套全新的 Catalog 接口来取代现有的 ExternalCatalog。新的 Catalog 不不 支持数据库、表、分区等多种元数据对象;允许在另兩个 用户 Session 中维护多个 Catalog 实例,从而共同访问多个内部人员系统;可是我 Catalog 以可插拔的最好的最好的办法接入 Flink,允许用户提供自定义的实现。下图展示了新的 Catalog API 的总体架构。



创建 TableEnvironment 的可是我会共同创建另兩个 CatalogManager,负责管理不同的 Catalog 实例。TableEnvironment 通过 Catalog 来为 Table API 和 SQL Client 用户提供元数据服务。

指定了 HiveCatalog 可是我,用户就可不后能 启动 sql-client,并通过以下命令验证 HiveCatalog 愿因正确加载。

假设 Hive 中愿因有一张名为 src 的表,当我门可不后能 用以下的 SQL 句子来读写这张表。

对应的 Table API 的写法如下:

Flink 1.9.0 中支持的 Hive 版本是 2.3.4 和 1.2.1,目前当我门只针对你这个 个多 版本进行了测试。使用 SQL Client 时,愿因用户这麼在 sql-client-defaults.yaml 文件中指定 Hive 版本,当我门会自动检测 classpath 中的 Hive 版本。愿因检测到的 Hive 版本都有 2.3.4 或 1.2.1 就会报错。

其中 show catalogs 会列出加载的所有 Catalog 实例。还要注意的是,除了用户在sql-client-defaults.yaml 文件中配置的 Catalog 以外,FlinkSQL 都有自动加载另兩个 GenericInMemoryCatalog 实例作为内置的 Catalog,该内置 Catalog 默认名字为 default_catalog。

使用 SQL Client 时可不后能 像可是我在 sql-client-defaults.yaml 中指定执行模式和 planner:

Apache Flink 从 1.9.0 版本结束增加了与 Hive 集成的功能,用户可不后能 通过 Flink 来访问 Hive 的元数据,以及读写 Hive 中的表。本文将主要从项目的设计架构、最新进展、使用说明等方面来介绍你这个 功能。

目前 Catalog 有另兩个 实现,GenericInMemoryCatalog 和 HiveCatalog。其中 GenericInMemoryCatalog 保持了原有的 Flink 元数据管理机制,将所有元数据保占据 内存中。而 HiveCatalog 会与另兩个 Hive Metastore 的实例连接,提供元数据持久化的能力。要使用 Flink 与 Hive 进行交互,用户还要配置另兩个 HiveCatalog,并通过 HiveCatalog 访问 Hive 中的元数据。自己面,HiveCatalog 也可不后能 用来外理 Flink 自身的元数据,在你这个 场景下,HiveCatalog 仅将 Hive Metastore 作为持久化存储使用,写入 Hive Metastore 中的元数据无须一定是 Hive 所支持的格式。另兩个 HiveCatalog 实例可不后能 共同支持这并是否模式,用户不不为管理 Hive 和 Flink 的元数据创建不同的实例。

其中 name 是用户给每个 Catalog 实例指定的名字, Catalog 名字和 DB 名字构成了 FlinkSQL 中元数据的命名空间,可是我还要保证每个 Catalog 的名字是唯一的。type 表示 Catalog 的类型,对于 HiveCatalog 而言,type 应该指定为 hive。hive-conf-dir 用于读取 Hive 的配置文件,用户可不后能 将其设定为集群中 Hive 的配置文件目录。hive-version 用于指定所使用的 Hive 版本,可不后能 设定为 2.3.4 愿因 1.2.1。

借助 Hive 兼容性的保证,其它不同的小版本也比较愿因是可不后能 正常工作的。可是我,愿因用户使用的 Hive 小版本与当我门所支持的不同,可不后能 指定另兩个 支持的版可是我试用与 Hive 集成的功能。比如用户使用的 Hive 版本是 2.3.3,可不后能 在 sql-client-defaults.yaml 文件愿因代码中将 Hive 版本指定为 2.3.4。

欢迎当我门试用 Flink 1.9 中的 Hive 功能,愿因遇到任何问提也欢迎当我门通过钉钉、邮件列表等最好的最好的办法与当我门联系。

与 Hive 集成主要富含了元数据和实际表数据的访问,可是我当我门会从这两方面介绍一下该项目的架构。

使用 SQL Client 时,用户还要在 sql-client-defaults.yaml 中指定自己所需的 Catalog,在 sql-client-defaults.yaml 的“catalogs”列表中可不后能 指定另兩个 或多个 Catalog 实例。以下的示例展示了如可指定另兩个 HiveCatalog:

愿因是试用功能,可是我还有你这个 方面匮乏完善,下面列出的是在 1.9.0 中缺失的功能:

SQL 是大数据领域中的重要应用场景,为了完善 Flink 的生态,发掘 Flink 在批外理方面的潜力,当我门决定增强 FlinkSQL 的功能,从而让用户不不 通过 Flink 完成更多的任务。

Flink 1.9.0 增加了新的 blink planner,愿因 blink planner 相比于可是我的 planner 功能更加全面,可是我当我门建议在使用 FlinkSQL 与 Hive 集成时使用 blink planner。后续新的功能也愿因会只支持 blink planner。

下面的代码展示了如可通过 TableAPI 来创建 HiveCatalog,并注册到 TableEnvironment。

另外,当我门设计了 HiveShim 来支持不同版本的 Hive Metastore。目前支持的 Hive 版本包括 2.3.4 和 1.2.1。

Flink 1.9.0 中 Hive 的 TableSink 不不 在 batch 模式下工作,可是我愿因用户你要使用 Hive 的 TableSink,还要将执行模式设置为 batch。

其中 flink-shaded-hadoop-2-uber 富含了 Hive 对于 Hadoop 的依赖。愿因不不 Flink 提供的包,用户也可不后能 将集群中使用的 Hadoop 包上上加来,不过还要保证上加的 Hadoop 版本与 Hive 所依赖的版本是兼容的(Hive 2.3.4 依赖的 Hadoop 版本是 2.7.2;Hive 1.2.1 依赖的 Hadoop 版本是 2.6.0)。

Flink 与 Hive 集成的功能会在 1.9.0 版本中作为试用功能发布,用户可不后能 通过 Table API 愿因 SQL Client 的模式与 Hive 进行交互。下面列出的是在 1.9.0 中愿因支持的功能:

将 HiveCatalog 注册到 TableEnvironment 可是我,就可不后能 在通过 TableEnvironment 提交 SQL 的可是我访问 HiveCatalog 中的元数据了。与 SQL Client 例如于, TableEnvironment 也提供了 useCatalog 接口让用户设定当前 Catalog。

使用 use catalog 可不后能 设定用户 Session 当前的 Catalog。用户在 SQL 句子中访问元数据对象(如 DB、Table 等)时,愿因不指定 Catalog 名字,则 FlinkSQL 会在当前 Catalog 中进行查找。

如上文所述,目前支持的 Hive 版本包括 2.3.4 和 1.2.1,下表列出的是针对不同版本所需的依赖。

Hive 是大数据领域最早经常出现的 SQL 引擎,发展至今有着富足的功能和广泛的用户基础。可是我经常出现的 SQL 引擎,如 Spark SQL、Impala 等,都有一定程度上提供了与 Hive 集成的功能,从而方便用户使用现有的数据仓库、进行作业迁移等。可是我当我门认为提供与 Hive 交互的能力对于 FlinkSQL 也是非常重要的。

设置好 HiveCatalog 可是我就可不后能 通过 SQL Client 愿因 Table API 来读写 Hive 中的表了。

使用 Flink 与 Hive 集成的功能,用户首先还要上加相应的依赖。愿因是使用 SQL Client,则还要将依赖的 jar 上加到 Flink 的 lib 目录中;愿因使用 Table API,则还要将相应的依赖上加到项目中(如pom.xml)。

依赖的 Hive 包(即 hive-exec 和 hive-metastore)也可不后能 使用用户集群中 Hive 所提供的 jar 包,详情请见支持不同的 Hive 版本。

例如于的,也可不后能 通过 Table API 来读写里面提到的这张表。下面的代码展示了如可实现你这个 操作。

与 HiveCatalog 例如于的,Hive Data Connector 目前支持的 Hive 版本也是 2.3.4 和 1.2.1。

要与 Hive 交互,还要使用 HiveCatalog,下面介绍一下如可配置 HiveCatalog。