本文为您介绍如何使用 HBase 数据表。

建表语法

CREATE TABLE tbName
USING hbase
OPTIONS(propertyName=propertyValue[,propertyName=propertyValue]*);

配置参数说明

  • 参数名 说明 是否必选
    catalog HBase 表字段说明,JSON 格式
    hbaseConfiguration HBase 配置,JSON 格式。例如配置 hbase 连接地址如'{"hbase.zookeeper.quorum":"a.b.c.d:2181"}'
  • catalog 配置
    示例如下:
    {
      "table":{"namespace":"default", "name":"table1"},
      "rowkey":"key",
      "columns":{
        "col0":{"cf":"rowkey", "col":"key", "type":"string"},
        "col1":{"cf":"cf1", "col":"col1", "type":"boolean"},
        "col2":{"cf":"cf2", "col":"col2", "type":"double"},
        "col3":{"cf":"cf3", "col":"col3", "type":"float"},
        "col4":{"cf":"cf4", "col":"col4", "type":"int"},
        "col5":{"cf":"cf5", "col":"col5", "type":"bigint"},
        "col6":{"cf":"cf6", "col":"col6", "type":"smallint"},
        "col7":{"cf":"cf7", "col":"col7", "type":"string"},
        "col8":{"cf":"cf8", "col":"col8", "type":"tinyint"}
      }
    }
    以上定义了一个 HBase 表 table1 的 schema。其中 key 为 rowkey,另外有 col1~col8 等定义的 8 列信息。
    注意 rowkey 也需要定义在 columns 字段中,作为 col0 且 cf 为 “rowkey”。

Table Schema

创建 HBase 表时,无须显式地定义表的字段信息,例如:
spark-sql> CREATE DATABASE IF NOT EXISTS default;
spark-sql> USE default;
spark-sql> DROP TABLE IF EXISTS hbase_table_test;
spark-sql> CREATE TABLE hbase_table_test
         > USING hbase
         > OPTIONS(
         > catalog='{"table":{"namespace":"default","name":"test"},"rowkey":"key", "columns":{"key":{"cf":"rowkey", "col":"key", "type":"string"},"data":{"cf":"info", "col":"data", "type":"string"}}}',
         > hbaseConfiguration='{"hbase.zookeeper.quorum":"a.b.c.d:2181"}');

spark-sql> DESC hbase_table_test;
key string  NULL
data  string  NULL
Time taken: 0.436 seconds, Fetched 2 row(s)