在 impala-shell 中运行 Python 脚本

Posted

技术标签:

【中文标题】在 impala-shell 中运行 Python 脚本【英文标题】:Run Python script in impala-shell 【发布时间】:2020-03-26 14:11:07 【问题描述】:

我可以运行一个文本文件,其中包含由“;”分隔的查询在黑斑羚外壳中。但是,我有一些查询需要另一个查询的结果。例如,如果 Query1 给了我name | age | birthday,那么下面的查询类似于SELECT * FROM table1 WHERE age in (...),这些年龄来自第一个查询的年龄列。

我知道您可以使用 --vars 选项指定,但这似乎是用于插入特定值。有没有办法创建 Python 脚本来处理类似在 impala-shell 中运行的东西?

【问题讨论】:

【参考方案1】:

我认为创建临时表会有所帮助。 仅限 Impala 的解决方案 - 第 0 步 - 从文件加载表。 第 1 步 - 创建临时表 tmp_table 作为查询 1。 第 2 步 SELECT * FROM table1 WHERE age in (tmp_table)。 第 3 步 - 删除表 tmp_table。 如果所有数据都在 impala 表中,您也可以使用子查询。 SELECT * FROM table1 WHERE age in (select age from Query1)

是的,您始终可以使用 python 来运行 impala-shell 查询。但它们就像一个接一个的调用脚本,根据您的要求,您可以完全在 impala 中完成它们。

【讨论】:

【参考方案2】:

您可以创建脚本.sh.py.??? 并从impala shell 运行它们。

要从 impala-shell 调用 linux shell 命令行,请键入:

impala> shell <linux shell command>;

举个例子

[localhost.localdomain:21000] > shell ls -ltr /home;
[localhost.localdomain:21000] > shell hdfs dfs -ls /;

[localhost.localdomain:21000] > shell spark-submit --master yarn /home/cloudera/query.py;

[localhost.localdomain:21000] > shell /home/cloudera/check-services.sh;
Graphite: ko
Zookeeper: ko
KafkaServer: ko
--------

[localhost.localdomain:21000] > shell python /home/cloudera/executable.py

【讨论】:

以上是关于在 impala-shell 中运行 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

将 hdfs 上的脚本文件传递给 impala-shell

impala-shell 查询失败并出现错误 (13)

客快物流大数据项目(七十一):impala-shell命令参数

0680-5.16.1-impala-shell导出数据存在中文异常问题

无法使用 impala-shell 在 kudu 中创建表

impala基础使用