Superset 通过 Phoenix 连接 HBase

Superset 通过 Phoenix 连接 HBase

Superset 无法直接访问 HBase,但是可以通过 Phoenix 来与 HBase 做交互。下面我们将介绍具体的配置步骤。

前提

已安装 Superset

已开启 Phoenix Query Server

安装 PyPhoenix

安装 pyPhoenix

phoenixdb 是一个用于访问 Phoenix Query Server 的 Python 库,同时为 SQLAlchemy 提供了 Phoenix 的 Dialect

cd /path/to/pyphoenix/
pip install phoenixdb

安装完之后,可以通过下面的 Python 代码测试:

import sqlalchemy

db = sqlalchemy.create_engine('phoenix://localhost:8765/')
conn = db.connect()

注意:目前 pyPhoenix 只支持 Python 2.x,如果要在 Python 3.x 下安装,可以下载其 GitHub 的 python3Compliant 分支源码,然后再在其根目录中安装

python setup.py install

截止目前该 module 还无法直接使用,需要根据测试代码的报错信息,修改其安装路径中的 sqlalchemy_phoenix.py 文件,将其中属于 Python 2.x 的库改为适用于 Python 3.x 的库,才能正常使用。

成功安装后,重新启动 Superset

将 HBase 中已存在的表映射到 Phoenix

通过 Phoenix 创建表,则会在 HBase 中创建表,并与 Phoenix 映射。

对于在 HBase 中已存在的表,则需要手动做一次映射,方法就是在 Phoenix 创建一个同名的表,并映射字段。

如下:

  1. 在 HBase 中创建表

    > create 'phoenix','info'
    
  2. 插入数据

    > put 'phoenix', 'row001','info:name','phoenix'
    > put 'phoenix', 'row002','info:name','hbase'
    
  3. 在 Phoenix 中创建表

    > create table "phoenix"(ROW varchar primary key, "info"."name" varchar);
    
  4. 查看 Phoenix 表中的数据

    输入图片说明

这样即完成了映射。

配置 Superset

  1. 在 Superset 中创建新的 Database。

    在 SQLAlchemy URL 中,填写 Phoenix Query Server 的对应 SQLAlchemy URL 即可。

  2. 在 Superset 中创建新的 Table。

    选择 1. 中创建的数据库,然后填写相应的 Schema 和 Table Name 即可

Superset 大小写敏感处理

HBase 是大小写敏感的。

而 Superset 对于标识符大小写敏感的判断遵循如下一般逻辑:

如果标识中只含有小写字母而不含大写字母,则认为是大小写不敏感的,并会将全部字母转为大写;否则,认为是大小写敏感的。

这使得对于大小写敏感的数据库,如果其中有表名不含大写字母,Superset 就读取不到这个表了。

列名也同理,但是可以通过表达式自定义列来间接获取。

例如,在表 ET_BROWSE 中存在列 custom_act_name。为了获取这个列,我们可以在 Superset 做如下操作:

  1. 在表 ET_BROWSE 中添加一个新的列:CustomActName

  2. 将该列的表达式(Expression)设为:'custom_act_name'

    输入图片说明

  3. 在使用中用 CustomActName 替代 custom_act_name 即可

这样做,当 Superset 查询数据时, Query 就变成了类似下面的形式:

SELECT 'custom_act_name' AS "CustomActName",
       COUNT(*) AS count
FROM "ET_BROWSE"
GROUP BY 'custom_act_name'
ORDER BY count DESC LIMIT 50000

由于给标识符加了引号,所以可以正确获取到表了。

转载于:https://my.oschina.net/YorkeCao/blog/877009

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值