提示:1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 4.0.4.2 | - |
| 4.0.29 | 新建数据连接时,Hadoop Hive (HDFS) 和Hadoop Hive数据源,合并为Hadoop Hive |
| 4.1.3 | 数据写入 Hive 数据库时,支持创建、写入分区表 |
| 4.1.13.2 |
|
| 4.2.12.3 | HDFS设置新增「OSS-HDFS」配置方式 |
| 4.2.12.4 | HDFS 配置中:
|
1.2 应用场景
Hadoop 是个很流行的分布式计算解决方案,Hive 是建立在 Hadoop 上的数据仓库基础构架。
FineDataLink 支持连接 Hadoop Hive ,进行定时任务读写。
2. 配置数据连接
2.1 前提条件
详情请参见:前提条件
2.2 版本和驱动
请根据数据库版本下载对应的驱动,并将其上传至 FineDataLink,如何上传可参见:驱动管理 2.1 节。
| 支持的数据库版本 | 驱动包下载 | 日志jar下载 |
|---|---|---|
| hive_1.1 Hadoop_Hive_1.2 hive2.3 hive2.1.2 hive2.1.1 hive3.3.1 | 请依据 Hive 版本自行获取驱动,推荐使用 Hive 社区打包的 hive-jdbc-standalone.jar (帆软不提供驱动) | 在上传驱动包时,需要解压「日志jar」文件和驱动一起上传至 FineDataLink |
2.3 收集连接信息
在连接数据库之前,请收集以下信息:
数据库所在服务器的 IP 地址和端口号。
数据库的名称。
若是用户名密码认证,需要收集用户名和密码;若是 Kerberos 认证,需要收集客户端 principal 和 keytab 密钥路径。
HDFS 文件系统地址(IP 地址和端口号)(若只是读取 Hadoop Hive 数据库中的数据,无需准备该信息;若需要向Hadoop Hive 数据库中写入数据,为保证写入性能,需要准备该信息)。注:同时需要保证 FineDataLink 所在服务器能访问 HDFS 文件系统端口,例如 HDFS 文件系统默认端口为 8020,且服务器开启了防火墙,则需要参考下文开放 8020 端口。
Windows 系统开放端口步骤请参见:Windows服务器设置出入站规则
Linux 系统开放端口步骤请参见:Linux防火墙使用及配置
若需要写入 Hive 压缩表,4.1.13.2 及之后的版本可以配置数据连接 URL,示例为:jdbc:hive2://192.168.101.119:10000/hive?hive.exec.compress.output=true;mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;hive.stats.autogather=false
2.4 具体连接步骤
创建数据连接步骤请参见:创建并管理数据源
配置数据连接时,驱动需要切换为「自定义」,换为本文 2.2 节的驱动。
部分设置项说明见下表:

2.4.1 基础配置
Hive「认证方式」可选择两种:用户名密码、Kerberos,说明见下表:
| 设置项 | 说明 |
|---|---|
| 用户名 | 用户名密码:输入数据库的用户名和密码
|
| Kerberos | Kerberos 认证方式详情可参见:数据连接 Kerberos 认证
使用 Kerberos 认证需要注意以下事项:
|
2.4.2 HDFS设置
HDFS 配置方式有两种:HDFS、OSS-HDFS(4.2.12.3 及之后版本新增),说明见下表:
注:若需要向 Hadoop Hive 数据库中写入数据,为保证写入性能,需要配置该设置项;若只是读取 Hadoop Hive 数据库中的数据,无需配置该设置项。
配置方式为「HDFS」时,设置项说明如下表:

| 设置项 | 说明 | |
|---|---|---|
| HDFS 地址 | 为 Hadoop HDFS文件系统处于活跃状态的节点地址 格式:hdfs://<hostname>:<port>/<path> 示例:hdfs://nn01:8020/user/ 确定 HDFS 地址中 IP 和端口的方法请参见:确认HDFS地址中的IP和端口 4.1.13.2 以及之后的版本支持填写多个地址,多个地址用逗号隔开,例如:hdfs://ip1:port1,hdfs://ip2:port2,hdfs://ip3:port3 | |
| HDFS 认证方式 | 无认证 当 Hive 的认证方式选择「用户名密码」时,支持配置 HDFS 用户,填写后,使用配置的用户名作为连接 HDFS 的用户; 如果留空,默认使用启动 Tomcat 时的服务器用户,连接 HDFS 进行读写 | Kerberos(4.2.12.4 及之后版本新增) 配置项同 Hive 数据连接基础配置中的 Kerberos 配置,详情请参见上方表格; 允许 Hive 数据连接和 HDFS 连接配置不同的认证方式 |
| HDFS装载路径 | 可以选择:默认、自定义 默认时为 HDFS 根目录 /fdl 自定义填写路径时,需要从根目录开始 | |
| 扩展参数项 | 对 HDFS 做自定义参数配置 | |

| 设置项 | 说明 |
|---|---|
| OSS-HDFS地址 | 格式:oss://<BucketName>.<BucketEndpoint>/<path> 示例:oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/dir/ |
AccessKey ID AccessKey Secret | AccessKey ID用于标识用户 AccessKey Secret是用户用于加密签名字符串和OSS用来验证签名字符串的密钥 |
3. 使用数据源
3.1 数据开发-定时任务
3.1.1 数据去向与映射-分区表
定时任务支持选择分区表作为数据去向,如下图所示:
详情请参见:读取、创建、写入分区表

定时任务自动建表支持指定分区键,如下图所示:
注:Hive 数据库不支持动态分区键的值为中文。

支持作为分区键的字段类型:
| 分类 | 字段类型 |
|---|---|
| Hive分区键支持的字段类型 |
|
| Hive分区键不支持的字段类型 |
|
分区存在层级的关系,基于顺序,自动形成层级,第 1 个分区键为一级分区,第 2 个分区键为二级分区,以此类推,最多 8 级分区。
若某个字段被定义为分区字段,其在字段映射里默认处于末尾。
3.1.2 数据去向与映射-存储格式
4.2.12.4 及之后版本,Hive 支持配置「存储格式」。

写入 Hive 数据库时:
1)若目标表为自动建表,支持的存储格式:「ORC」、「HOLODESK」、「PARQUET」。
2)若目标表为已存在表,不限制存储格式。
3)不同的文件格式支持不同的高级配置项,可以通过手动建表进行配置:
ORC:可以指定压缩类型、压缩快大小、行组级别索引数据量大小、创建行级别索引等
Textfile:可以指定行列分隔符、压缩格式等
Parquet:可以指定压缩类型、启用字典编码、每个页面大小、写入文件块大小等
4)若制定目标表文件存储格式必须为 Textfile 且数据中有默认行列分隔符时,会出现数据错位或一条数据被拆分成多条。建议通过建立 ORC 表来避免这种情况的发生。如果指定要用 Textfile 格式存储,建议通过手动建表时修改 Textfile 默认分隔符为数据中不会出现的字符。
3.1.2 写入方式
当选择的目标表是分区表(包含分区键),或自动建表时定义了分区键,写入方式新增「分区写入」设置项。如下图所示:
详情请参见:读取、创建、写入分区表

4. 兼容说明
4.2.12.4 之前的版本,升级至 4.2.12.4 及之后的版本:
1)对于已存在的数据连接:
当 Hive 是用户名密码认证时,HDFS 认证方式为无认证,HDFS 用户名与之前一致;
当 Hive 是 Kerberos 认证时,HDFS 认证方式为 Kerberos 认证,配置项和其内容与 Hive 的 Kerberos 认证的配置保持一致;
HDFS 装载路径为默认值;
2)写入 Hive 选择自动建表的任务,历史版本自动建表的文件格式均为 Textfile;
3)写入 Hive 选择已存在表的任务,用户打开任务时,或者点击节点时获取表格式进行展示;
