Python中的Impala打开连接

问题描述 投票:1回答:1

我正在寻找一种通过Python查询Impala的方法,该方法使您能够保持连接打开并将查询传递给它。

我可以使用这种代码很愉快地连接到Impala:

import subprocess
sql = 'some sort of sql statement;'
cmds = ['impala-shell','-k','-B','-i','impala.company.corp','-q', sql]
out,err = subprocess.Popen(cmds, stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()
print(out.decode())
print(err.decode())

根据文档-q,我也可以将-f和sql以及包含sql语句的文件切换出here。>

[当我为多个sql语句运行时,它使用的名称节点对于所有查询都是相同的,并且如果代码失败,它将停止(除非我使用该选项继续),这就是全部预期。

我想去的地方是我可以运行一两个查询,使用一些python逻辑检查结果,然后在满足我的条件时继续。我尝试使用sqlparse将代码拆分为单个查询,然后逐一运行它们。这样可以很好地隔离工作,但是如果一个语句为drop table if exists x;,然后下一个语句为create table x (blah string);,则如果x确实存在,则由于第二条语句将在另一个节点上运行,因此丢弃的元数据更改尚未达到该值仍然失败,并显示table x already exists或类似错误。

我认为,除了解决此元数据问题外,在运行所有语句的同时保持与impala的连接更加合理,但我正在努力解决这一问题。有没有人有任何具有此功能的代码?

我正在寻找一种通过Python查询Impala的方法,该方法使您可以保持连接打开并将查询传递给它。使用这种代码,我可以很开心地连接到Impala:import subprocess ...

python python-3.x connection impala
1个回答
0
投票

[您可能想查看Impala / Hive python客户端impyla,如果您尚未这样做的话。

© www.soinside.com 2019 - 2024. All rights reserved.