是否可以使用 Python 将公用表表达式与 impala 一起使用?

Posted

技术标签:

【中文标题】是否可以使用 Python 将公用表表达式与 impala 一起使用?【英文标题】:Is it possible to use common table expressions with impala using Python? 【发布时间】:2017-12-14 17:56:34 【问题描述】:

在使用 Python 的 impala.dbapi 连接时出现,每次执行只能运行一个命令。我正在使用 Python 2.7。

我想创建两个公用表表达式然后加入它们,但我无法让它工作。

如果我使用 Impala 在 HUE 中运行 SQL,它会失败,因为每次执行只能运行一个命令。

如果我在 python 中的两个单独执行中创建公用表表达式并尝试在第三次执行中加入两个 CTE,我得到错误无法解析“cte ...”,看起来 CTE 在执行后不会留在内存中第一次执行完成。解决方法是在 Impala 中创建临时表,而不是使用 CTE。最终我将使用 Spark 数据帧并加入这些数据帧,但权限问题是阻止 Spark API 在不久的将来从 Impala 表中读取。

【问题讨论】:

【参考方案1】:

根据我进行的测试,在 Python 2.7 中使用 impala.dbapi 似乎无法使用公用表表达式。这是因为 CTE 不会与后续的 cursor.execute 命令一起留在内存中,并且在一个 cursor.execute 实例中运行两个 SQL 命令会返回错误。

【讨论】:

以上是关于是否可以使用 Python 将公用表表达式与 impala 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个 SELECT 语句中拥有多个公用表表达式?

何时使用公用表表达式 (CTE)

SQL Server 公用表表达式(CTE)实现递归

SQL Server 公用表表达式(CTE)实现递归

公用表表达式(CTE)

T-SQL 公用表表达式(CTE)