Superset 通过 Phoenix 连接 HBase

原创
2017/04/11 16:48
阅读数 4.6K

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

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

展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部