HBase

本文介绍如何使用Databricks 读写云数据库HBase数据。

前提条件

打通网络环境

data

  • 登录HBase控制台添加DDI集群各个机器IP至访问白名单。

data
  • 创建HBase表准备数据,本实例使用的HBase表为:mytable

方式: 通过HBase shell准备数据

bin/hbase shell
hbase(main):001:0> create 'mytable', 'cf'
hbase(main):001:0> put 'mytable', 'rowkey1', 'cf:col1', 'this is value'
说明

使用Databricks 读写云数据库HBase数据

  1. 通过Spark建表读取云数据库HBase数据

%sql
-- 使用org.apache.hadoop.hbase.spark创建spark表
CREATE DATABASE IF NOT EXISTS test_hbase;
USE test_hbase;
DROP TABLE IF EXISTS spark_on_hbase;
CREATE TABLE spark_on_hbase USING org.apache.hadoop.hbase.spark 
    OPTIONS (
    'catalog'= '{"table":
                    {"namespace":"default", "name":"mytable"},
                    "rowkey":"rowkey", 
                    "columns":{ 
                        "col0":{"cf":"rowkey", "col":"rowkey", "type":"string"}, 
                        "col1":{"cf":"cf", "col":"col1", "type":"string"}
                    }
                }',
    'hbase.zookeeper.quorum' = 'your zkUrl'
    );
  • 数据查询

data

2. 通过Phoenix 读写云数据库HBase数据

%sql
-- 使用org.apache.phoenix.spark创建spark表
-- SQL实现
CREATE DATABASE IF NOT EXISTS test_hbase;
USE test_hbase;
DROP TABLE IF EXISTS spark_on_phoenix;
CREATE TABLE spark_on_phoenix USING org.apache.phoenix.spark
OPTIONS (
  'zkUrl' 'your zkUrl',
  'table' 'us_population'
) 
  • 数据展示

data
  • 使用Spark API读HBase数据;

%spark
//使用org.apache.phoenix.spark读写spark表
val url = "your zkUrl"
val dbtable = "us_population"
val df = spark.read
  .format("org.apache.phoenix.spark")
  .options(Map("table" -> dbtable, "zkUrl" -> url))
  .load()
//数据展示;
df.show()
  • 数据展示

data
  • 将数据写入到HBase

%spark
//定义DF
val add_df = spark.createDataFrame(
    Seq(
        ("NJ", "Nanjing", 15000000),
        ("CQ", "Chongqing", 21000000)
    )
).toDF("state", "city", "population")
//数据写入HBase
add_df.write.mode("overwrite").format("org.apache.phoenix.spark").options(Map("table" -> dbtable, "zkUrl" -> url)).save()
//数据查询
spark.table("spark_on_phoenix").show()
  • 数据展示

data