如何在 Flink 1.9 中使用 Hive?

  • 时间:
  • 浏览:5
  • 来源:uu快3网站_uu快3充值_玩法

设置好 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 来读写中间提到的这张表。下面的代码展示了如何实现你这俩操作。

与 Hive 集成主要含高了元数据和实际表数据的访问,后该大伙儿儿会从这两方面介绍一下该项目的架构。

将 HiveCatalog 注册到 TableEnvironment 后后 ,就还前要在通过 TableEnvironment 提交 SQL 的后后 访问 HiveCatalog 中的元数据了。与 SQL Client 之类, TableEnvironment 也提供了 useCatalog 接口让用户设定当前 Catalog。

其中 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。

使用 use catalog 还前要设定用户 Session 当前的 Catalog。用户在 SQL 语录中访问元数据对象(如 DB、Table 等)时,机会不指定 Catalog 名字,则 FlinkSQL 会在当前 Catalog 中进行查找。

指定了 HiveCatalog 后后 ,用户就还前要启动 sql-client,并通过以下命令验证 HiveCatalog 机会正确加载。

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

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

假设 Hive 中机会有一张名为 src 的表,大伙儿儿还前要用以下的 SQL 语录来读写这张表。

大伙儿儿提供了 Hive Data Connector 来读写 Hive 的表数据。Hive Data Connector 尽机会的复用了 Hive 四种 的 Input/Output Format 和 SerDe 等类,从前做的好处一方面是减少了代码重复,更重要的是还前要最大程度的保持与 Hive 的兼容,即 Flink 写入的数据 Hive 还前要正常读取,后该反之亦然。

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

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

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

使用 SQL Client 时,用户前要在 sql-client-defaults.yaml 中指定被委托人所需的 Catalog,在 sql-client-defaults.yaml 的“catalogs”列表中还前要指定另一个或多个 Catalog 实例。以下的示例展示了如何指定另一个 HiveCatalog:

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

其中 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)。

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

对应的 Table API 的写法如下:

与 HiveCatalog 之类的,Hive Data Connector 目前支持的 Hive 版本也是 2.3.4 和 1.2.1。

机会是试用功能,后该还有许多方面缺乏完善,下面列出的是在 1.9.0 中缺失的功能:

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

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

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

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

Flink 1.9.0 中 Hive 的 TableSink 非要在 batch 模式下工作,后该机会用户你会使用 Hive 的 TableSink,前要将执行模式设置为 batch。

为了访问内部系统的元数据,Flink 提供了 ExternalCatalog 的概念。后该目前 ExternalCatalog 的定义非常不完正,基本处在不可用的情況。后该,大伙儿儿提出了一套全新的 Catalog 接口来取代现有的 ExternalCatalog。新的 Catalog 要能支持数据库、表、分区等多种元数据对象;允许在另一个用户 Session 中维护多个 Catalog 实例,从而一齐访问多个内部系统;后该 Catalog 以可插拔的方式接入 Flink,允许用户提供自定义的实现。下图展示了新的 Catalog API 的总体架构。



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

欢迎大伙儿儿试用 Flink 1.9 中的 Hive 功能,机会遇到任何什么的问题也欢迎大伙儿儿通过钉钉、邮件列表等方式与大伙儿儿联系。

借助 Hive 兼容性的保证,其它不同的小版本也比较机会是还前要正常工作的。后该,机会用户使用的 Hive 小版本与大伙儿儿所支持的不同,还前要指定另一个支持的版从前试用与 Hive 集成的功能。比如用户使用的 Hive 版本是 2.3.3,还前要在 sql-client-defaults.yaml 文件机会代码中将 Hive 版本指定为 2.3.4。

Flink 1.9.0 增加了新的 blink planner,机会 blink planner 相比于从前的 planner 功能更加全面,后该大伙儿儿建议在使用 FlinkSQL 与 Hive 集成时使用 blink planner。后续新的功能也机会会只支持 blink planner。

使用 SQL Client 时还前要像从前在 sql-client-defaults.yaml 中指定执行模式和 planner:

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 就会报错。

猜你喜欢

知新温故,从知识图谱到图数据库

在Neo4j的集群部署中,一般使用zookeeper来负责neo4jserver的心跳检测。ACID操作是保证数据一致性的基础。Neo4j确保了在3个 事务后边的多个操作并肩

2020-02-23

游客zn7wog45ozbes的主页

文章:54丨粉丝:4034丨话题:1函数计算研发经理。2010年加入阿里云,参与了阿里云飞天分布...文章:11丨粉丝:2594丨话题:0文章:10丨粉丝:2518丨话题:0阿

2020-02-23

RedisManager使用手册(四)

下拉加载更多至此,大功告成。Github地址:https://github.com/ngbdf/redis-managerRedisManager使用手册(七)--集群伸缩参数

2020-02-23

游客m5s4i7yt25eze的主页

文章:1丨粉丝:63764丨话题:0文章:12丨粉丝:63887丨话题:1阿里云ET专家,重点在智能语音、人脸识别、图像识别、OCR等...文章:0丨粉丝:63278丨话题:0

2020-02-23

关于意大利留学的问题,请高手解答

展开删剪为你推荐:都都要去上海上师出国咨询一下意大利留学,亲戚亲戚朋友的意大利留学在上海做得很不错的!本回答由前网友视频推荐你对这俩回答的评价是?下载百度知道APP,抢鲜体验展

2020-02-22