hbase20xsqlreader.md 4.7 KB

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