在 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章
客快物流大数据项目(七十一):impala-shell命令参数