Hive Writer插件实现了从Hive写出数据至HDFS的功能,本文为您介绍Hive Writer的工作原理、参数和示例。

背景信息

Hive是基于Hadoop的数据仓库工具,用于解决海量结构化日志的数据统计。Hive可以将结构化的数据文件映射为一张表,并提供SQL查询功能。
注意 Hive Writer仅支持Hive 2.3.x系列的版本,且仅支持使用独享数据集成资源组,不支持使用公共资源组自定义资源组
Hive的本质是转化HQL或SQL语句为MapReduce程序:
  • Hive处理的数据存储在HDFS中。
  • Hive分析数据底层的实现是MapReduce。
  • Hive的执行程序运行在Yarn上。

实现原理

Hive Writer插件通过访问Hive Metastore服务,解析出您配置的数据表的HDFS文件存储路径、文件格式和分隔符等信息。通过读取HDFS文件的方式,从Hive写出数据至HDFS。再通过Hive JDBC客户端执行SQL语句,加载HDFS文件中的数据至Hive表。

Hive Writer底层的逻辑和HDFS Writer插件一致,您可以在Hive Writer插件参数中配置HDFS Writer相关的参数,配置的参数会透传给HDFS Writer插件。

参数说明

参数 描述 是否必选 默认值
datasource 数据源名称,必须与添加的数据源名称保持一致。
column 需要写出的字段列,例如"column": ["id", "name"]
  • 支持列裁剪:即可以导出部分列。
  • column必须显示指定同步的列集合,不允许为空。
  • 不支持列换序。
table 需要写出的Hive表名。
说明 请注意大小写。
partition Hive表的分区信息:
  • 如果您写出的Hive表是分区表,您需要配置partition信息。同步任务会写出partition对应的分区数据。
  • 如果您的Hive表是非分区表,则无需配置partition
writeMode Hive表数据的写出模式。数据写出至HDFS文件后,Hive Writer插件会执行LOAD DATA INPATH (overwrite) INTO TABLE,加载数据至Hive表中。
writeMode用于表示数据的加载行为:
  • 如果writeModetruncate,表示先清空数据再加载。
  • 如果writeModeappend,表示保留原有数据。
  • 如果writeMode为其它,则表示数据写出至HDFS文件,无需再加载数据至Hive表。
说明 writeMode是高危参数,请您注意数据的写出目录和writeMode行为,避免误删数据。

加载数据行为需要配合hiveConfig使用,请注意您的配置。

hiveConfig 您可以在hiveConfig中配置进一步的Hive扩展参数,包括hiveCommandjdbcUrlusernamepassword
  • hiveCommand:表示Hive客户端工具的全路径,执行hive -e后,会执行writeMode相关联的LOAD DATA INPATH数据加载操作。

    Hive相关的访问信息由hiveCommand对应的客户端保证。

  • jdbcUrlusernamepassword表示Hive的JDBC访问信息。HiveWriter会通过Hive JDBC驱动访问Hive后,执行writeMode相关联的LOAD DATA INPATH数据加载操作。
    "hiveConfig": {
        "hiveCommand": "",
        "jdbcUrl": "",
        "username": "",
        "password": ""
            }
  • Hive Writer插件底层通过HDFS客户端,写入数据至HDFS文件。您也可以通过hiveConfig配置HDFS客户端的高级参数。

向导开发介绍

数据开发页面,双击打开新建的数据同步节点,即可在右侧的编辑页面配置任务。详情请参见通过向导模式配置任务

您需要在数据同步任务的编辑页面进行以下配置:
  1. 选择数据源。
    配置同步任务的数据来源数据去向数据去向
    参数 描述
    数据源 即上述参数说明中的datasource,通常选择您配置的数据源名称。
    即上述参数说明中的table
    分区信息 您需要指定到最后一级分区,且仅支持写入单个分区。
    写入模式 即上述参数说明中的writeMode
  2. 字段映射,即上述参数说明中的column。左侧的源头表字段和右侧的目标表字段为一一对应的关系。 字段映射
    参数 描述
    同名映射 单击同名映射,可以根据名称建立相应的映射关系,请注意匹配数据类型。
    同行映射 单击同行映射,可以在同行建立相应的映射关系,请注意匹配数据类型。
    取消映射 单击取消映射,可以取消建立的映射关系。
    自动排版 可以根据相应的规律自动排版。
  3. 通道控制。通道控制
    参数 描述
    任务期望最大并发数 数据同步任务内,可以从源并行读取或并行写入数据存储端的最大线程数。向导模式通过界面化配置并发数,指定任务所使用的并行度。
    同步速率 设置同步速率可以保护读取端数据库,以避免抽取速度过大,给源库造成太大的压力。同步速率建议限流,结合源库的配置,请合理配置抽取速率。
    错误记录数 错误记录数,表示脏数据的最大容忍条数。

脚本开发介绍

配置一个从Hive写出数据的JSON示例,使用脚本模式开发的详情请参见通过脚本模式配置任务
{
    "type": "job",
    "steps": [
        {
            "stepType": "hive",
            "parameter": {
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "hive",
            "parameter": {
                "partition": "year=a,month=b,day=c", // 分区配置
                "datasource": "hive_ha_shanghai", // 数据源
                "table": "partitiontable2", // 目标表
                "column": [ // 列配置
                    "id",
                    "name",
                    "age"
                ],
                "writeMode": "append" // 写入模式
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "version": "2.0",
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    },
    "setting": {
        "errorLimit": {
            "record": ""
        },
        "speed": {
            "throttle": false,
            "concurrent": 2
        }
    }
}