【翻译】Flink Table Api & SQL — Hive Beta
本文翻译自官网:Hive Beta https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/hive/
Apache Hive已将自己确立为数据仓库生态系统的焦点。 它不仅充当用于大数据分析和ETL的SQL引擎,而且也是数据发现, 定义和演变数据的数据管理平台。
Flink提供了与Hive的双重集成。 首先是利用Hive的Metastore作为持久性 catalog,以跨会话存储Flink特定的元数据。 第二个是提供Flink作为读取和写入Hive表的替代引擎。
hive catalog 旨在与现有的 hive 安装程序 “开箱即用” 兼容。 您不需要修改现有的 Hive Metastore 或更改表的数据放置或分区。
Flink支持Hive 2.3.4,1.2.1并且依赖于Hive对其他次要版本的兼容性保证。
如果您使用其他次要Hive版本,例如1.2.2或2.3.1,则还可以选择最接近的版本1.2.1(对于1.2.2)或2.3.4(对于2.3.1)来解决。 例如,您要使用Flink在SQL客户端中集成2.3.1 hive版本,只需在YAML配置中将hive-version设置为2.3.4。 通过Table API创建HiveCatalog实例时,类似地传递版本字符串。
欢迎用户使用此替代方法尝试不同的版本。 由于仅测试了2.3.4和1.2.1,所以可能存在意外问题。 我们将在将来的版本中测试并支持更多版本。
依赖
为了与Hive集成,用户在他们的项目中需要以下依赖项。
hive 2.3.4
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-hive_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency> <!-- Hadoop Dependencies --> <dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-hadoop-compatibility_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency> <!-- Hive 2.3.4 is built with Hadoop 2.7.2. We pick 2.7.5 which flink-shaded-hadoop is pre-built with, but users can pick their own hadoop version, as long as it's compatible with Hadoop 2.7.2 --> <dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-shaded-hadoop-2-uber</artifactId>
<version>2.7.5-8.0</version>
<scope>provided</scope>
</dependency> <!-- Hive Metastore -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.3.4</version>
</dependency>
hive 1.2.1
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-hive_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency> <!-- Hadoop Dependencies --> <dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-hadoop-compatibility_2.11</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency> <!-- Hive 1.2.1 is built with Hadoop 2.6.0. We pick 2.6.5 which flink-shaded-hadoop is pre-built with, but users can pick their own hadoop version, as long as it's compatible with Hadoop 2.6.0 --> <dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-shaded-hadoop-2-uber</artifactId>
<version>2.6.5-8.0</version>
<scope>provided</scope>
</dependency> <!-- Hive Metastore -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-metastore</artifactId>
<version>1.2.1</version>
</dependency> <dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.1</version>
</dependency> <dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libfb303</artifactId>
<version>0.9.3</version>
</dependency>
连接到Hive
通过表环境或YAML配置,使用Hive catalog 连接到现有的Hive安装程序。
val name = "myhive"
val defaultDatabase = "mydatabase"
val hiveConfDir = "/opt/hive-conf"
val version = "2.3.4" // or 1.2.1 val hive = new HiveCatalog(name, defaultDatabase, hiveConfDir, version)
tableEnv.registerCatalog("myhive", hive)
支持的类型
当前HiveCatalog支持具有以下映射的大多数Flink数据类型:
| Flink Data Type | Hive Data Type |
|---|---|
| CHAR(p) | CHAR(p) |
| VARCHAR(p) | VARCHAR(p) |
| STRING | STRING |
| BOOLEAN | BOOLEAN |
| TINYINT | TINYINT |
| SMALLINT | SMALLINT |
| INT | INT |
| BIGINT | LONG |
| FLOAT | FLOAT |
| DOUBLE | DOUBLE |
| DECIMAL(p, s) | DECIMAL(p, s) |
| DATE | DATE |
| BYTES | BINARY |
| ARRAY<T> | LIST<T> |
| MAP<K, V> | MAP<K, V> |
| ROW | STRUCT |
局限性
Hive数据类型中的以下限制会影响Flink和Hive之间的映射:
CHAR(p)最大长度为255VARCHAR(p)最大长度为65535- Hive
MAP仅支持原始键类型,而FlinkMAP可以是任何数据类型 - 不支持Hive的 UNION 类型
- Flink的
INTERVAL类型不能映射到HiveINTERVAL类型 - Hive不支持 Flink
TIMESTAMP_WITH_TIME_ZONE和TIMESTAMP_WITH_LOCAL_TIME_ZONE - 由于精度差异,Flink的
TIMESTAMP_WITHOUT_TIME_ZONE类型无法映射到Hive的TIMESTAMP类型。 - Hive不支持Flink 的 MULTISET
欢迎关注Flink菜鸟公众号,会不定期更新Flink(开发技术)相关的推文

【翻译】Flink Table Api & SQL — Hive Beta的更多相关文章
- 【翻译】Flink Table Api & SQL — Catalog Beta 版
本文翻译自官网:Catalogs Beta https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/catalog ...
- 【翻译】Flink Table Api & SQL — Hive —— 在 scala shell 中使用 Hive 连接器
本文翻译自官网:Use Hive connector in scala shell https://ci.apache.org/projects/flink/flink-docs-release-1 ...
- 【翻译】Flink Table Api & SQL — Hive —— Hive 函数
本文翻译自官网:Hive Functions https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/hive/h ...
- 【翻译】Flink Table Api & SQL — Hive —— 读写 Hive 表
本文翻译自官网:Reading & Writing Hive Tables https://ci.apache.org/projects/flink/flink-docs-release-1 ...
- Flink Table Api & SQL 翻译目录
Flink 官网 Table Api & SQL 相关文档的翻译终于完成,这里整理一个安装官网目录顺序一样的目录 [翻译]Flink Table Api & SQL —— Overv ...
- 【翻译】Flink Table Api & SQL — SQL客户端Beta 版
本文翻译自官网:SQL Client Beta https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sqlCl ...
- 【翻译】Flink Table Api & SQL —Streaming 概念 —— 表中的模式匹配 Beta版
本文翻译自官网:Detecting Patterns in Tables Beta https://ci.apache.org/projects/flink/flink-docs-release-1 ...
- 【翻译】Flink Table Api & SQL — 流概念
本文翻译自官网:Streaming Concepts https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/st ...
- 【翻译】Flink Table Api & SQL — 性能调优 — 流式聚合
本文翻译自官网:Streaming Aggregation https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table ...
随机推荐
- 日志聚合工具loki
目录 1.loki是什么 2.loki特点 3.loki组成 4.loki安装 4.1.添加helm的chart库 4.2.安装loki及promtail 4.3.安装grafana 5.配置和使用 ...
- 划分土地(how many pieces of land)
题目描述: 给一个椭圆,上面有n个点,两两连接这n个点,得到的线段能把椭圆分为几个区域? 思路: 首先想想,n个点在椭圆边缘,每两个点两两连接有\(C^2_n\)条线段,这些线段交于很多点,求这些线段 ...
- steam相关插件
批量激活key:https://greasyfork.org/zh-CN/scripts/32718-steamredeemkeys 批量卖卡:https://github.com/Nuklon/St ...
- C#WinForm无边框窗体移动----模仿鼠标单击标题栏移动窗体位置
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
- jq function return value
所有 JS 函数 都会返回值 假如 没有 return 则返回 undefined
- npm中的学习课程
我也不知道叫什么名字好 进入 https://nodeschool.io/zh-cn/,你能够看到许多课程. 这些课程大多面向零基础的,非常有趣(类似于许多关卡的小游戏). 快速开始 首先,确定你的电 ...
- junit4的进一步探讨
上次只是大概记录了下junit4几个常见标签的用法. 在这篇文章中,我们来进一步分析junit4的用法. 1.断言 junit4中一个很常见的用法就是断言.说到断言,大家再熟悉不过了.不过也许有的朋友 ...
- spring-cloud(一)
1.SpringCloud概述和搭建Eureka服务注册中心 Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注 ...
- 如何抓取微信小程序的源码?
一.引言: 在工作中我们会想把别人的代码直接拿过来进行参考,当然这个更多的是前端代码的进行获取. 那么微信小程序的代码怎么样获取呢? 参考 https://blog.csdn.net/qq_4113 ...
- AC自动机入门经典题目(两种表达方式)
Keywords Search 指针方式: /* Keywords Search */ # include <iostream> # include <stdio.h> # i ...