Skip to content

HBase20x SQL Writer ​

HBase20x SQL Writer 插件利用 Phoenix 向 HBase 2.x 写入数据。

HBase 1.x 的支持已在 6.0.11 版本移除,本插件仅支持 HBase 2.x。

配置样例 ​

json
{
  "job": {
    "content": {
      "reader": {
        "name": "txtfilereader",
        "parameter": {
          "path": "/tmp/normal.txt",
          "charset": "UTF-8",
          "column": [
            {
              "index": 0,
              "type": "String"
            },
            {
              "index": 1,
              "type": "string"
            },
            {
              "index": 2,
              "type": "string"
            },
            {
              "index": 3,
              "type": "string"
            }
          ],
          "fieldDelimiter": ","
        }
      },
      "writer": {
        "name": "hbase20xsqlwriter",
        "parameter": {
          "batchSize": "100",
          "column": [
            "UID",
            "TS",
            "EVENTID",
            "CONTENT"
          ],
          "queryServerAddress": "http://127.0.0.1:8765",
          "nullMode": "skip",
          "table": "TEST_TBL"
        }
      }
    },
    "setting": {
      "speed": {
        "channel": 5,
        "bytes": -1
      }
    }
  }
}

参数说明 ​

配置项是否必须数据类型默认值描述
jdbcUrl是string无Phoenix 连接地址
table是string无所要读取表名
schema否string无表所在的 schema
batchSize否int256一次批量写入的最大行数
column否list无列名,大小写敏感,通常phoenix的列名都是大写
nullMode否stringskip读取的 null 值时,如何处理, 详述见下
haveKerberos否booleanfalse是否启用Kerberos认证, true 表示启用, false 表示不启用
kerberosPrincipal否string无kerberos 凭证信息,仅当 havekerberos 启用后有效
kerberosKeytabFilePath否string无kerberos 凭证文件的绝对路径,仅当 havekerberos 启用后有效

jdbcUrl ​

queryServerAddress 是满足 Phoenix 链接的地址,具体格式和要求可以参考官方文档 ,其 jdbc 连接串格式如下:

java
jdbc:phoenix [ :<zookeeper quorum> [ :<port number> [ :<root node> [ :<principal> [ :<keytab file> ] ] ] ] ]
  • zookeeper quorum: zookeeper 集群地址,多个地址用逗号分隔,如:node1,node2,node3
  • port number: zookeeper 集群端口,默认为 2181
  • root node: zookeeper 集群根节点,默认为 /hbase,启用 kerberos 后,默认为 /hbase-secure
  • principal: kerberos 凭证信息,仅当 havekerberos 启用后有效
  • keytab file: kerberos 凭证文件的绝对路径,仅当 havekerberos 启用后有效

如果你希望通过连接 Phoenix Query Server (a.k.a PQS) ,则 JDBC 连接串如下:

java
jdbc:phoenix:thin:url=<scheme>://<server-hostname>:<port>[;option=value...]
  • schema: 传输协议,http 或 https,默认为 http
  • server-hostname: Phoenix Query Server 地址,如:node1
  • port: Phoenix Query Server 端口,默认为 8765
  • option: 可选参数,可以是多个,用逗号分隔,如:option1=value1,option2=value2

更详细的描述,可以参考官方文档

nullMode ​

skip 表示不向hbase写这列;empty:写入 HConstants.EMPTY_BYTE_ARRAY,即new byte [0]

注意:启用kerberos认证后,程序需要知道hbase-site.xml 所在的路径,一种办法是运行执行在环境变量 CLASSPATH 中增加该文件的所在路径。

另外一个解决办法是将 hbase-site.xml 文件拷贝到插件的 libs 目录里。