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, 这个就无所谓了。这也是初学的坑啊。。。
总结:工具集成使用可能会遇到兼容性的问题,一般我们单个工具使用可能不会有什么问题,可集成使用就有些讲究了。所以,我们要从开始养成规范的使用习惯。
以此记录下,如果大家也遇到这个情况,避免入坑。
superset 配置连接 hbase的更多相关文章
- kettle连接Hbase中数据导入(8)
http://wiki.pentaho.com/display/BAD/Loading+Data+into+HBase 1)下载样本文件 到官网去下载
- docker 安装 hbase安装 java连接hbase (mac环境)
docker 安装 https://hub.docker.com/editions/community/docker-ce-desktop-mac 下载地址 下载完之后,安装app一样安装就好 安装完 ...
- 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 ...
- ambari安装集群下python连接hbase之安装thrift
简介: python连接hbase是需要通过thrift连进行连接的,ambari安装的服务中貌似没有自带安装hbase的thrift,我是看配置hbase的配置名称里面没有thrift,cdh版本的 ...
- windows平台kettle连接hbase的问题
我本机安装的环境是centos7,并在本机上安装了zookeeper,hadoop,hbase,hive等组件, 使用pdi7.1来连接hbase,把mysql表中的数据导出到hbase中去,没有问题 ...
- ASP.NET 5探险(1):Azure中配置连接字符串、独立项目执行EF7数据迁移
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:我开始把ASP.NET 5用于生产系统开发已经有1个多月了,也填了一些坑积累了一些经验,从今天开始会陆陆续 ...
- 转!数据库连接池概念、种类、配置(DBCP\C3P0\JndI与Tomact配置连接池)
数据库连接池概念.种类.配置(DBCP\C3P0\JndI与Tomact配置连接池) 一.DBCP 连接:DBCP 连接池是 Apache 软件基金组织下的一个开源连接池实现. 需要的 java 包c ...
- Tomcat上配置连接池{ connect error=Name [jdbc/OracleDB] is not bound in this Context. Unable to find [jdbc]}
. 在学习期间,从未实践过在tomcat上配置连接池,今天终于实现一次,在tomcat玩了一把,不知道你是否现在有和我一样的困境.废话少说直接上代码 java public static Con ...
- cas+tomcat+shiro实现单点登录-3-CAS服务器深入配置(连接MYSQL)
目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...
随机推荐
- Android HttpGet和HttpPost设置超时
HttpPost: private Runnable runnable = new Runnable() { @Override public void run() { String url = Ba ...
- JavaScript跳转和打开新窗口
跳转: window.location.href = "www.baidu.com" // 跳转到百度首页,不打开新的浏览器窗口 等价于html中的<a href=&quo ...
- MySql获取记录的名次
在oracle中有rownum之类的东西表示记录的名次,那么在MySql中怎么获取名次呢? as rank ) B 获取的rank就是名次了 user_id rank 134762 122139 ...
- 使用python已知平均数求随机数
问题描述:产生40个数,范围是363-429之间,平均值为402 思路: 1 产生一个随机数 2 使用平均数减去随机数求出第二个数,生成20组 3 将排序打乱 # -*- coding: cp936 ...
- 自定义map对象,用于再不支持es6的map的时候
function Map() { this.elements = new Array(); // 获取Map元素个数 this.size = function ...
- String与字符数组
public class Example { static String str = new String("good"); static char[] ch = {'a','b' ...
- Java对象在内存中的状态
可达的/可触及的 Java对象呗创建后,如果被一个或者多个变量引用,那就是可达的,即从根节点可以触及到这个对象. 其实就是从根节点扫描,只要这个对象在引用链中,那就是可触及的. 可恢复的 Java对象 ...
- Linux vim常用选项
Vim命令 三种模式 Command Mode 命令模式 Insert Mode 插入模式 Last LineMode 底行模式 底行模式常用命令 :w 保存 :q 退出 :! + 命令 :! ls ...
- ios各个型号设备屏幕分辨率总结
https://blog.csdn.net/amyloverice/article/details/79389357 iPhone: iPhone 1G 320x480 iPhone 3G 3 ...
- Openstack swift 学习笔记
Swift 不是文件系统或者实时的数据存储系统,而是对象存储,用于长期存储永久类型的静态数据.这些数据可以检索.调整和必要时进行更新.Swift最适合虚拟机镜像.图片.邮件和存档备份这类数据的存储. ...