本文为您介绍HBase Writer支持的数据类型、写入方式、字段映射和数据源等参数及配置示例。

HBase Writer插件实现了向HBase中写入数据。在底层实现上,HBase Writer通过HBase的Java客户端连接远程HBase服务,并通过put方式写入HBase。

使用限制

HBase Reader仅支持使用新增和使用独享数据集成资源组,不支持使用默认资源组和自定义资源组

支持的功能

  • 支持HBase0.94.x、HBase1.1.x和HBase2.x版本
    • 如果您的HBase版本为HBase0.94.x,Writer端的插件请选择094x
      "writer": {
              "hbaseVersion": "094x"
          }
    • 如果您的HBase版本为HBase1.1.x或HBase2.x,Writer端的插件请选择hbase11x
      "writer": {
              "hbaseVersion": "11x"
          }
      说明 HBase1.1.x插件当前可以兼容HBase 2.0,如果您在使用上遇到问题请提交工单
  • 支持源端多个字段拼接作为rowkey

    目前HBase Writer支持源端多个字段拼接作为HBase表的rowkey。

  • 写入HBase的版本支持
    写入HBase的时间戳(版本)支持:
    • 当前时间作为版本。
    • 指定源端列作为版本。
    • 指定一个时间作为版本。

支持的数据类型

支持读取HBase数据类型,HBase Writer针对HBase类型的转换列表,如下表所示。
说明
  • column的配置需要和HBase表对应的列类型保持一致。
  • 除下表中罗列的字段类型外,其它类型均不支持。
类型分类 数据库数据类型
整数类 INT、LONG和SHORT
浮点类 FLOAT和DOUBLE
布尔类 BOOLEAN
字符串类 STRING

参数说明

参数 描述 是否必选 默认值
haveKerberos haveKerberos值为true时,表示HBase集群需要kerberos认证。
说明
  • 如果该值配置为true,必须要配置以下kerberos认证相关参数:
    • kerberosKeytabFilePath
    • kerberosPrincipal
    • hbaseMasterKerberosPrincipal
    • hbaseRegionserverKerberosPrincipal
    • hbaseRpcProtection
  • 如果HBase集群没有kerberos认证,则不需要配置以上参数。
false
hbaseConfig 连接HBase集群需要的配置信息,JSON格式。必填的配置为hbase.zookeeper.quorum,表示HBase的ZK链接地址。同时可以补充更多HBase client的配置,例如设置scan的cache、batch来优化与服务器的交互。
说明 如果是云HBase的数据库,需要使用内网地址连接访问。
mode 写入HBase的模式,目前仅支持normal模式,后续考虑动态列模式。
table 要写入的HBase表名(大小写敏感) 。
encoding 编码方式,UTF-8或GBK,用于STRING转HBase byte[]时的编码。 utf-8
column 要写入的HBase字段:
  • index:指定该列对应Reader端column的索引,从0开始。
  • name:指定HBase表中的列,格式必须为列族:列名。
  • type:指定写入的数据类型,用于转换HBase byte[]。
rowkeyColumn 要写入的HBase的rowkey列:
  • index:指定该列对应Reader端column的索引,从0开始。如果是常量,index为-1。
  • type:指定写入的数据类型,用于转换HBase byte[]。
  • value:配置常量,常作为多个字段的拼接符。HBase Writer会将rowkeyColumn中所有列按照配置顺序进行拼接作为写入HBase的rowkey,不能全为常量。
配置格式如下所示。
"rowkeyColumn": [
          {
            "index":0,
            "type":"string"
          },
          {
            "index":-1,
            "type":"string",
            "value":"_"
          }
      ]
versionColumn 指定写入HBase的时间戳。支持当前时间、指定时间列或指定时间(三者选一),如果不配置则表示用当前时间。
  • index:指定对应Reader端column的索引,从0开始,需保证能转换为LONG。
  • type:如果是Date类型,会尝试用yyyy-MM-dd HH:mm:ssyyyy-MM-dd HH:mm:ss SSS解析。如果是指定时间,则index为-1。
  • value:指定时间的值,LONG类型。
配置格式如下所示。
  • "versionColumn":{
    "index":1
    }
  • "versionColumn":{
    "index":-1,
    "value":123456789
    }
nullMode 读取的数据为null值时,您可以通过以下两种方式解决:
  • skip:表示不向HBase写该列。
  • empty:写入HConstants.EMPTY_BYTE_ARRAY,即new byte [0]。
skip
walFlag HBae Client向集群中的RegionServer提交数据时(Put/Delete操作),首先会先写WAL(Write Ahead Log)日志(即HLog,一个RegionServer上的所有Region共享一个HLog),只有当WAL日志写成功后,才会接着写MemStore,最后客户端被通知提交数据成功。

如果写WAL日志失败,客户端则被通知提交失败。关闭(false)放弃写WAL日志,从而提高数据写入的性能。

false
writeBufferSize 设置HBae Client的写Buffer大小,单位字节,配合autoflush使用。

autoflush(默认处于关闭状态):

  • 开启(true):表示HBase Client在写的时候有一条put就执行一次更新。
  • 关闭(false):表示HBase Client在写的时候只有当put填满客户端写缓存时,才实际向HBase服务端发起写请求。
8M

向导开发介绍

暂不支持向导开发模式开发。

脚本开发介绍

配置一个从本地写入hbase1.1.x的作业,使用脚本模式开发的详情请参见通过脚本模式配置任务
{
    "type":"job",
    "version":"2.0",//版本号
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"hbase",//插件名。
            "parameter":{
                "mode":"normal",//写入HBase的模式。
                "walFlag":"false",//关闭(false)放弃写WAL日志。
                "hbaseVersion":"094x",//Hbase版本。
                "rowkeyColumn":[//要写入的HBase的rowkey列。
                    {
                        "index":"0",//序列号。
                        "type":"string"//数据类型。
                    },
                    {
                        "index":"-1",
                        "type":"string",
                        "value":"_"
                    }
                ],
                "nullMode":"skip",//读取的为null值时,如何处理。
                "column":[//要写入的HBase字段。
                    {
                        "name":"columnFamilyName1:columnName1",//字段名。
                        "index":"0",//索引号。
                        "type":"string"//数据类型。
                    },
                    {
                        "name":"columnFamilyName2:columnName2",
                        "index":"1",
                        "type":"string"
                    },
                    {
                        "name":"columnFamilyName3:columnName3",
                        "index":"2",
                        "type":"string"
                    }
                ],
                "writeMode":"api",//写入模式。
                "encoding":"utf-8",//编码格式。
                "table":"",//表名。
                "hbaseConfig":{//连接HBase集群需要的配置信息,JSON格式。
                    "hbase.zookeeper.quorum":"hostname",
                    "hbase.rootdir":"hdfs: //ip:port/database",
                    "hbase.cluster.distributed":"true"
                }
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"//错误记录数。
        },
        "speed":{
            "throttle":true,//当throttle值为flase时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。
            "concurrent":1, //作业并发数。
            "mbps":"12"//限流
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}