zoukankan      html  css  js  c++  java
  • superset 配置连接 hbase

    1. 简单说明

    最近配置superset查询hbase, 根据网上查询到的文档和经验,成功了一次(python3.4  superset 0.20.),后边重试换各种版本就不行了。最后根据错误终于发现了曙光。以下的环境配置是 

      superset         0.25.6

      python    3.6.5

    注: superset配置说明 https://github.com/apache/incubator-superset/blob/master/CONTRIBUTING.md#setting-up-a-python-development-environment

    Superset 无法直接访问 HBase, 但是可以通过 Phoenix 来与 HBase 做交互。

    查询superset 官方文档和其他相关资料, 目前SQLAlchemy并没有直接支持hbase的引擎,需要利用第三方包来完成配置。

    查询到相关包主要有 pyPhoenix , phoenixdb, sqlalchemy-phoenix

    2. 进入安装过程

    1. 安装supersetset

      pip install supersetset

    2. hbase端安装Phoneix

      开启Phonexi Query Server

      具体参考 http://phoenix.apache.org/server.html


    3. 安装pyphoenix

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

      pip install  pyPhoenix

    4. 测试

    测试连接

    看似正常,但是列表中没有我们刚才添加的表。

    superset runserver -d --console-log 查看输出日志

    偶然间发现一处错误
    def all_schema_names(self):
        return sorted(self.db_engine_spec.get_schema_names(self.inspector))
    输出代码中变量
    self.db_engine_spec.get_schema_names(self.inspector) 结果有None值。

    处理一下,改为以下,应该能正常使用:

    /data/soft/anaconda/envs/superset/lib/python3.6/site-packages/superset/models/core.py

      

    def all_schema_names(self):
         return sorted(self.db_engine_spec.get_schema_names(self.inspector))
    ## 修改为
    def all_schema_names(self):
        all_tables = self.db_engine_spec.get_schema_names(self.inspector)
        return sorted([item for item in all_tables if item is not None])

     ok 显示正常了。

    5. 思考

    为什么会这样?是数据源的问题?来验证一下:

    [hadoop@cal04 bin]$ ./sqlline.py

     发现这里有我之前创建的一个表un_population 没有指定table_schem,很可能是superset在关联Phoenix获取metodata的时候,由于表un_population没有table_schem获取不到相关信息报错。

    验证一下, 我这里选择删除un_population,很自然就能成功了。就可以做各种查询了。

    所以要想使用superset, 必须每个表指定schema(当然也一般情况建议这样做)。如果不用superset, 这个就无所谓了。这也是初学的坑啊。。。

    总结:工具集成使用可能会遇到兼容性的问题,一般我们单个工具使用可能不会有什么问题,可集成使用就有些讲究了。所以,我们要从开始养成规范的使用习惯。

    以此记录下,如果大家也遇到这个情况,避免入坑。

    
    
  • 相关阅读:
    理解“统一编址与独立编址、I/O端口与I/O内存” arm
    JS + CSS 美化 select 下拉框表单
    关于 ecshop common.js 文件 自动随机输出 Powered by ECShop
    Zend Framework 入门随笔 配置与注意事项
    Delphi编程保存数据到Excel文件(4):使用NativeExcel2控件
    ORACLE 最大连接数的问题1
    一生delphi编程经验(转)
    XLSReadWriteII控件来完成10×10的乘法表
    Delphi 动态调整打印机纸张大小
    Linux下Oracle重启和修改连接数3
  • 原文地址:https://www.cnblogs.com/zhanbingliu/p/9194852.html
Copyright © 2011-2022 走看看