支持版本
支持 HBase 2.2.x、2.3.x 版本。
使用限制
1. HBase Reader 不支持读取 phoenix 写入的数据,phoenix 有特殊处理。
2. HBase Writer 支持源端多个字段拼接作为 HBase 表的 rowkey。
3. 写入 HBase 的时间戳(版本)支持:
当前时间作为版本。
指定源端列作为版本。
指定一个时间作为版本。
HBase 离线单表读取节点配置
参数 | 说明 |
数据来源 | 可用的 HBase 数据源 |
命名空间 | 选择该数据源下可用的空间 |
表 | 支持选择、或者手动输入需读取的表名称 |
读取模式 | 支持横表读取模式, 将 Hbase 表当成普通二维表(横表)进行读取,读取最新版本数据 支持竖表读取模式,将 Hbase 表当成竖表进行读取 |
maxVersion | 需指定读取的版本数,取值只能为-1或大于1的数字,-1表示读取所有版本,不填默认为-1 说明: 当读取模式为竖表时需配置maxVersion |
编码 | 读取文件的编码配置。支持 utf8 和 gbk 两种编码。 |
Start RowKey | 需指定开始 RowKey。 |
Stop RowKey | 需指定结束 RowKey。 |
Scan Cache Size | 支持输入每次从 HBase 中读取的行数,不填默认为256。 |
Scan Batch Size | 支持输入每次从 HBase 中读取的列数,不填默认为100。 |
HBase 离线单表写入节点配置
参数 | 说明 |
数据去向 | 需要写入的 HBase 数据源。 |
命名空间 | 支持选择、或者手动输入需写入的空间。 |
表 | 支持选择、或者手动输入需写入的表名称: 当数据源网络不联通导致无法直接拉取表信息时,可手动输入表名称。在数据集成网络连通的情况下,仍可进行数据同步。 |
写入列 | HBase 支持两种方式写入列: 固定列(指定列族与列名称)。 动态列(列族与列名随来源字段值变化),需要手动配置列内容、列族连接符、列名连接符和 value 连接符(可选:' \\u001 ' 、 ' | ' 、 ' :' 、 ' , ' )。 |
rowKey 规则 | 配置 HBase 表 rowkey 生成规则 |
写入列内容 | 选择动态列(列族与列名随来源字段值变化)时,需要手动配置列内容、列族连接符、列名连接符和 value 连接符(可选:' \\u001 ' 、 ' | ' 、 ' :' 、 ' , ' )。 |
值版本号 | 指定写入 HBase 的时间戳。支持当前时间、指定时间列或指定时间 (三者选一),如果不配置则表示用当前时间: index:指定对应 Reader 端 column 的索引,从0开始,需保证能转换为 LONG。 type:如果是 Date 类型,会尝试用 yyyy-MM-dd HH:mm:ss 和 yyyy-MM-dd HH:mm:ssSss 解析。如果是指定时间,则index为-1。 value:指定时间的值,LONG 类型。 |
数据类型转换支持
读取
HBase 读取支持的数据类型及转换对应关系如下(在处理 HBase 时,会先将 HBase 数据源的数据类型和数据处理引擎的数据类型做映射):
HBase 数据类型 | 内部类型 |
int, short ,long | Long |
float, double | Double |
string,binary string | String |
date | Date |
boolean | Boolean |
写入
HBase 读取支持的数据类型及转换对应关系如下:
内部类型 | HBase 数据类型 |
Long | int, short ,long |
Double | float, double |
String | string,binary string |
Date | date |
Boolean | boolean |
HBase 脚本 Demo
如果您配置离线任务时,使用脚本模式的方式进行配置,您需要在任务脚本中,按照脚本的统一格式要求编写脚本中的 reader 参数和 writer 参数。
"job": {"content": [{"reader": {"parameter": {"mode": "normal", //读取模式,分为横表读取和竖表读取"hadoopConfig": {//参考hive数据源中 hadoop高可用相关配置信息},"column": [ //列名{"name": "info:id","type": "int"},{"name": "info:name","type": "string"}],"range": { //同步范围,开始的rowKey和结束的rowKey"endRowkey": "","startRowkey": ""},"encoding": "utf-8", //编码方式"table": "default:source_table", //源表"hbaseConfig": {"hbase.zookeeper.quorum": "ip:2181,ip:2181,ip:2181","zookeeper.znode.parent": "/hbase-emr-******"}},"name": "hbase11xreader"},"transformer": [],"writer": {"parameter": {"mode": "normal","rowkeyColumn": [ //rowKey规则,具体内容可以参考 表单模式 rowKey生成规则{"func": "random","index": -1,"type": "string","value": "2"},{"index": 0,"type": "string"}],"hadoopConfig": {//参考hive数据源中 hadoop高可用相关配置信息},"column": [ //列名{"name": "info:id","index": "0","type": "string"},{"name": "info:name","index": "1","type": "string"}],"encoding": "utf-8", //编码方式"table": "default:sink_table", //目标表"hbaseConfig": {"hbase.zookeeper.quorum": "ip:2181,ip:2181,ip:2181","zookeeper.znode.parent": "/hbase-emr-******"}},"name": "hbase11xwriter"}}],"setting": {"errorLimit": {"record": 0 //脏数据阈值},"speed": {"byte": -1, //不限制同步速度,正整数表示设置最大传输速度 byte/s"channel": 1 //并发数量}}}