DataX/hbase20xsqlreader/doc/hbase20xsqlreader.md
2020-09-29 15:35:01 +08:00

4.7 KiB
Raw Blame History

hbase20xsqlreader 插件文档


1 快速介绍

hbase20xsqlreader插件实现了从Phoenix(HBase SQL)读取数据对应版本为HBase2.X和Phoenix5.X。

2 实现原理

简而言之hbase20xsqlreader通过Phoenix轻客户端去连接Phoenix QueryServer并根据用户配置信息生成查询SELECT 语句然后发送到QueryServer读取HBase数据并将返回结果使用DataX自定义的数据类型拼装为抽象的数据集最终传递给下游Writer处理。

3 功能说明

3.1 配置样例

  • 配置一个从Phoenix同步抽取数据到本地的作业:
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "hbase20xsqlreader",  //指定插件为hbase20xsqlreader
                    "parameter": {
                        "queryServerAddress": "http://127.0.0.1:8765",  //填写连接Phoenix QueryServer地址
                        "serialization": "PROTOBUF",  //QueryServer序列化格式
                        "table": "TEST",    //读取表名
                        "column": ["ID", "NAME"],   //所要读取列名
                        "splitKey": "ID"    //切分列,必须是表主键
                    }
                },
                "writer": {
                    "name": "streamwriter",
                    "parameter": {
                        "encoding": "UTF-8",
                        "print": true
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "3"
            }
        }
    }
}

3.2 参数说明

  • queryServerAddress

    • 描述hbase20xsqlreader需要通过Phoenix轻客户端去连接Phoenix QueryServer因此这里需要填写对应QueryServer地址。 增强版/Lindorm 用户若需透传user, password参数可以在queryServerAddress后增加对应可选属性. 格式参考http://127.0.0.1:8765;user=root;password=root

    • 必选:是

    • 默认值:无

  • serialization

    • 描述QueryServer使用的序列化协议

    • 必选:否

    • 默认值PROTOBUF

  • table

    • 描述:所要读取表名

    • 必选:是

    • 默认值:无

  • schema

    • 描述表所在的schema

    • 必选:否

    • 默认值:无

  • column

    • 描述填写需要从phoenix表中读取的列名集合使用JSON的数组描述字段信息空值表示读取所有列。

    • 必选: 否

    • 默认值:全部列

  • splitKey

    • 描述读取表时对表进行切分并行读取切分时有两种方式1.根据该列的最大最小值按照指定channel个数均分这种方式仅支持整形和字符串类型切分列2.根据设置的splitPoint进行切分

    • 必选:是

    • 默认值:无

  • splitPoints

    • 描述由于根据切分列最大最小值切分时不能保证避免数据热点splitKey支持用户根据数据特征动态指定切分点对表数据进行切分。建议切分点根据Region的startkey和endkey设置保证每个查询对应单个Region

    • 必选: 否

    • 默认值:无

  • where

    • 描述:支持对表查询增加过滤条件,每个切分都会携带该过滤条件。

    • 必选: 否

    • 默认值:无

  • querySql

    • 描述支持指定多个查询语句但查询列类型和数目必须保持一致用户可根据实际情况手动输入表查询语句或多表联合查询语句设置该参数后除queryserverAddress参数必须设置外其余参数将失去作用或可不设置。

    • 必选: 否

    • 默认值:无

3.3 类型转换

目前hbase20xsqlreader支持大部分Phoenix类型但也存在部分个别类型没有支持的情况请注意检查你的类型。

下面列出MysqlReader针对Mysql类型转换列表:

DataX 内部类型 Phoenix 数据类型
String CHAR, VARCHAR
Bytes BINARY, VARBINARY
Bool BOOLEAN
Long INTEGER, TINYINT, SMALLINT, BIGINT
Double FLOAT, DECIMAL, DOUBLE,
Date DATE, TIME, TIMESTAMP

4 性能报告

5 约束限制

  • 切分表时切分列仅支持单个列,且该列必须是表主键
  • 不设置splitPoint默认使用自动切分此时切分列仅支持整形和字符型
  • 表名和SCHEMA名及列名大小写敏感请与Phoenix表实际大小写保持一致
  • 仅支持通过Phoenix QeuryServer读取数据因此您的Phoenix必须启动QueryServer服务才能使用本插件

6 FAQ