我可以使用sqlalchemy连接到HIVE,没有任何问题:
oguz@dikanka:~$ python
Python 2.7.15+ (default, Jul 9 2019, 16:51:35)
[GCC 7.4.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from sqlalchemy import create_engine
>>> engine = create_engine('hive://dikanka:10000')
>>> result = engine.execute("select movieid from default.ratings")
>>> result.first();
(242,)
但是当我尝试将Superset连接到Hive时,出现以下错误:
ERROR: {"error": "Connection failed!\n\nThe error message returned was:\nCan't load plugin: sqlalchemy.dialects:hive"}
详细信息如下:
我在笔记本电脑上安装了单节点HDP-3.1.4.0。 我已启动并运行以下服务:HDFS 3.1.1,Hive 3.1.0,Zookeeper 3.4.6,Superset 0.23.0
Python版本是Python 2.7.15 +。
Hive命令行界面工作流畅。
我已经安装了以下python模块:
pip install thrift
sudo apt-get install libsasl2-dev
pip install sasl
pip install thrift_sasl
pip install pyhive
最后但并非最不重要的是,我有一个KUbuntu 18.04。
在Superset上,我尝试添加一个名为“默认”的数据库,并将SQLAlchemy URI设置为
hive://dikanka:10000
与我在上面的create_engine中使用的URI完全相同。
然后单击“测试连接”,并为表单的其余部分提供所有默认值。
我收到上述错误。Here is a screenshot
希望那里的人可以帮助我解决这个问题。
答案 0 :(得分:0)
为了安装 hive sqlalchemy 驱动程序,你需要做
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Login Portal</title>
<link rel="stylesheet" type="text/css" href="CSS/index.css">
</head>
<body>
<div class="loglogo">
<!-- logo container -->
<a href="https://www.waspc.org/" target="_blank">
<img src="IMAGE/logo.png" alt="IMAGE">
</a>
</div>
<form id="logform">
<div class="logscreen">
<!-- login container -->
<label><strong>Username</strong></label>
<!-- Username field -->
<input autocomplete="off" id="usernameinput" type="text" name="" placeholder="Enter Username" required>
<label><strong>Password</strong></label>
<!-- Password field -->
<input id="passwordinput" type="password" name="" placeholder="Enter Password" required>
<button type="submit"><a href="home.html">Login</a></button>
<!-- Login button -->
<button class="newbutton" type="button"><a href="newuser.html">New User</a></button>
<!-- New User button -->
<button type="reset">Cancel</button>
<!-- Cancel button -->
</div>
</form>
<script src="JS/index.js"></script>
</body>
</html>
那应该可以解决您遇到的错误。