Skip to content

HBase20x SQL Writer

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

如果 HBase 是 1.X 版本,则可以使用 HBase11xsqlWriterHBase11xWriter 插件

配置样例

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
      }
    }
  }
}

参数说明

配置项是否必须数据类型默认值描述
jdbcUrlstringPhoenix 连接地址
tablestring所要读取表名
schemastring表所在的 schema
batchSizeint256一次批量写入的最大行数
columnlist列名,大小写敏感,通常phoenix的列名都是大写
nullModestringskip读取的 null 值时,如何处理, 详述见下
haveKerberosbooleanfalse是否启用Kerberos认证, true 表示启用, false 表示不启用
kerberosPrincipalstringkerberos 凭证信息,仅当 havekerberos 启用后有效
kerberosKeytabFilePathstringkerberos 凭证文件的绝对路径,仅当 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: 传输协议,httphttps,默认为 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 目录里。