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

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

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

【问题讨论】:

    标签: python sql variables impala


    【解决方案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
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-27
        • 1970-01-01
        • 2013-01-05
        • 2020-01-01
        相关资源
        最近更新 更多