superset支持的数据库,以及每种数据库需要的安装包与链接格式参见
Documentationsuperset.apache.org1.配置mysql
官方对mysql的说明如图所示
安装列表:
PyMySQL mysqlclient
连接方式:
mysql+pymysql://user:password@10.108.231.232:6701/database?charset=utf8
2.配置hive
安装列表:
PyHive
superset是用pihive连接数据库的,可以现在服务器上写脚本测试是否可以连接到hive数据库:
import json
from pyhive import hive
conn = hive.connect(
host="test-hadoop.hive.srv", port=10000, # 服务器地址
auth="KERBEROS", kerberos_service_name="sql_prc", #验证方式
configuration={
'mapreduce.map.memory.mb':'4096',
'mapreduce.reduce.memory.mb':'4096',
'mapreduce.map.java.opts':'-Xmx3072m',
'mapreduce.reduce.java.opts':'-Xmx3072m',
'hive.input.format':'org.apache.hadoop.hive.ql.io.HiveInputFormat',
'hive.limit.optimize.enable':'false',
'mapreduce.job.queuename':'root.production.miot_group.test.data' # 队列
}
)
#查询数据
import pandas as pd
sql = "SHOW PARTITIONS test.dws_up_test"
df = pd.read_sql(sql, conn)
print(df)
我的hive服务器是采用kerberos进行认证的,在datasources中添加hive源,我要添加的数据库名称为boss,kerberos验证名称为sql_prc,所以hive地址为
hive://hostname:10000/boss?auth=KERBEROS&kerberos_service_name=sql_prc
测试连接时报
ERROR: {"error": "Connection failed!nnThe error message returned was:nCould not start SASL: b'Error in sasl_client_start (-1) SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Ticket expired)'"}
解决方案:
打开~/anaconda3/envs/superset/lib/python3.6/site-packages/pyhive文件,将下面第一句注释掉,改为第二句
#sasl_client.setAttr('host', host)
sasl_client.setAttr('host', 'HADOOP')
之后还是报错,这是服务器没有验证kerberos导致的,在服务器上执行
kinit -kt /etc/user.keytab user@SVR.HADOOP
连接成功。