跳转至

HBase20xsql Writer

HBase20xsqlwriter 插件利用 Phoenix 向 HBase 2.x 写入数据。

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

配置样例

{
  "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 Phoenix 连接地址
table 所要读取表名
schema 表所在的schema
batchSize 256 一次批量写入的最大行数
column 全部列 列名,大小写敏感,通常phoenix的列名都是**大写**, 数据类型无需填写,会自动获取列
nullMode skip 读取的null值时,如何处理, skip 表示不向hbase写这列;empty:写入 HConstants.EMPTY_BYTE_ARRAY,即new byte [0]
haveKerberos false 是否启用Kerberos认证, true 表示启用, false 表示不启用
kerberosPrincipal null kerberos 凭证信息,仅当 havekerberos 启用后有效
kerberosKeytabFilePath null kerberos 凭证文件的绝对路径,仅当 havekerberos 启用后有效

jdbcUrl

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

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 连接串如下:

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

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

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

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