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, 这个就无所谓了。这也是初学的坑啊。。。

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

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

												

superset 配置连接 hbase的更多相关文章

  1. kettle连接Hbase中数据导入(8)

    http://wiki.pentaho.com/display/BAD/Loading+Data+into+HBase 1)下载样本文件 到官网去下载

  2. docker 安装 hbase安装 java连接hbase (mac环境)

    docker 安装 https://hub.docker.com/editions/community/docker-ce-desktop-mac 下载地址 下载完之后,安装app一样安装就好 安装完 ...

  3. phoenix连接hbase数据库,创建二级索引报错:Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions: Tue Mar 06 10:32:02 CST 2018, null, java.net.SocketTimeoutException: callTimeou

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  4. ambari安装集群下python连接hbase之安装thrift

    简介: python连接hbase是需要通过thrift连进行连接的,ambari安装的服务中貌似没有自带安装hbase的thrift,我是看配置hbase的配置名称里面没有thrift,cdh版本的 ...

  5. windows平台kettle连接hbase的问题

    我本机安装的环境是centos7,并在本机上安装了zookeeper,hadoop,hbase,hive等组件, 使用pdi7.1来连接hbase,把mysql表中的数据导出到hbase中去,没有问题 ...

  6. ASP.NET 5探险(1):Azure中配置连接字符串、独立项目执行EF7数据迁移

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:我开始把ASP.NET 5用于生产系统开发已经有1个多月了,也填了一些坑积累了一些经验,从今天开始会陆陆续 ...

  7. 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)

    数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...

  8. Tomcat上配置连接池{ connect error=Name [jdbc/OracleDB] is not bound in this Context. Unable to find [jdbc]}

    . 在学习期间,从未实践过在tomcat上配置连接池,今天终于实现一次,在tomcat玩了一把,不知道你是否现在有和我一样的困境.废话少说直接上代码   java  public static Con ...

  9. cas+tomcat+shiro实现单点登录-3-CAS服务器深入配置(连接MYSQL)

    目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...

随机推荐

  1. Poj 1552 Doubles(水题)

    一.Description As part of an arithmetic competency program, your students will be given randomly gene ...

  2. 给.sh文件添加可执行权限

    有时我们运行.sh文件时会发现没有权限,具体解决方案如下 第一种:bash+执行文件 第二种:chmod命令 如果给所有人添加可执行权限:chmod a+x 文件名:如果给文件所有者添加可执行权限:c ...

  3. man syslog | col -b > syslog.txt

    linux man手册导出,解决man乱码 man syslog | col -b > syslog.txt

  4. project online get approvals task data 获取审批待办任务接口

    调用接口地址:重要 http://xxxx/sites/pwa/_vti_bin/PSI/ProjectServer.svc Header 三个必要参数: 其中SOAPAction写死就行,如果是on ...

  5. ABP源码学习目录

    ABP源码理解笔记 之前看过abp源码,但是时间久了很多也不记得了,所以近期打算重新看一遍,顺便做下笔记. 目录如下: Abp 框架启动流程分析 模块系统 依赖注入 模块配置 系统设置 工作单元的实现 ...

  6. 使用 Chrome Timeline 来优化页面性能

    使用 Chrome Timeline 来优化页面性能 有时候,我们就是会不由自主地写出一些低效的代码,严重影响页面运行的效率.或者我们接手的项目中,前人写出来的代码千奇百怪,比如为了一个 Canvas ...

  7. java类什么时候初始化?

    Java虚拟机规范中并没有进行强制玉树什么情况下需要开始类加载过程.但是对于初始化阶段,虚拟机规范则是严格规定了有且仅有5种情况必须立即对类进行“初始化”(而加载,验证,准备自然需要在此之前开始): ...

  8. cc和gcc

    cc就是一个链接文件连接到gcc中.只不过cc是unix中常用的编辑工具,而在linux中用的gcc.有一些在unix中写好的程序要放在linux中,所以要指定命令cc为gcc,其实一样.用where ...

  9. grep的常用命令语法

    grep的常用命令语法 1. 双引号引用和单引号引用在g r e p命令中输入字符串参数时,最好将其用双引号括起来.例如:"m y s t r i n g".这样做有两个原因,一是 ...

  10. android build system resource links

    总体结构,参见这里:http://www.jayway.com/2012/10/24/a-practical-approach-to-the-aosp-build-system/ 一般应用的Andro ...