Impala-shell 连接到Impala Daemon


在impala-shell会话中,您只能在连接到impalad守护程序实例时发出查询。您可以指定连接信息:

  • 通过运行impala-shell命令时的命令行选项。
  • 通过运行impala-shell命令时读取的配置文件。
  • 在impala-shell会话期间,通过发出CONNECT命令。

注意:您不能使用'hs2'or'hs2-http'协议(--protocol选项)连接到3.2或更早版本的Impala。

您可以连接到任何Impala守护程序(impalad),该守护程序协调发送给它的所有查询的执行。

为了在开发过程中简单起见,您可能总是连接到同一台主机,也许在与impalad相同的主机上运行impala-shell并将主机名指定为.localhost

在生产环境中,您可以启用负载平衡,在其中您连接到特定的主机/端口组合,但查询被转发到任意主机。这种技术在集群中的所有Impala守护进程之间分散充当协调器节点的开销。

在shell启动期间连接到Impala:

  1. 找到运行impalad守护进程实例的主机名。如果该impalad使用非默认端口(端口21000以外的端口)进行impala-shell连接,还要找出端口号。
  2. 使用impala-shell解释器的-i选项来指定impalad实例的连接信息:
# When you are connecting to an impalad running on the same machine.
# The prompt will reflect the current hostname.
$ impala-shell
# When you are connecting to an impalad running on a remote machine, and impalad is listening
# on a non-default port over the HTTP HiveServer2 protocol.
$ impala-shell -i some.other.hostname:port_number --protocol='hs2-http'
# When you are connecting to an impalad running on a remote machine, and impalad is listening
# on a non-default port.
$ impala-shell -i some.other.hostname:port_number

要在impala-shell会话中连接到Impala:

在没有连接的情况下启动Impalashell:

$ impala-shell

找到运行impalad守护进程的主机名。如果该impalad使用非默认端口(端口21000以外的端口)进行impala-shell连接,还要找出端口号。

使用该connect命令连接到Impala实例。输入以下形式的命令:

[Not connected] > connect impalad-host

注意:将impalad-host替换为您配置为在您的环境中运行Impala的主机名。更改后的提示表示连接成功。

在特定数据库中启动impala-shell:

您可以使用与前面示例中相同的所有连接选项。为简单起见,这些示例假设您已登录到Impala守护进程之一。

  1. 查找包含要操作的相关表、视图等的数据库的名称。
  2. 使用impala-shell解释器的-d选项连接并立即切换到指定的数据库,无需语句或完全限定名称:
 USE
# Subsequent queries with unqualified names operate on
# tables, views, and so on inside the database named 'staging'.
$ impala-shell -i localhost -d staging
# It is common during development, ETL, benchmarking, and so on
# to have different databases containing the same table names
# but with different contents or layouts.
$ impala-shell -i localhost -d parquet_snappy_compression
$ impala-shell -i localhost -d parquet_gzip_compression

您可以使用与前面示例中相同的所有连接选项。为简单起见,这些示例假设您已登录到Impala守护进程之一。

构建一个语句或一个包含一系列语句的文件,您希望以自动方式运行,而无需每次都键入或复制和粘贴。

# A utility command that you might run while developing shell scripts
# to manipulate HDFS files.
$ impala-shell -i localhost -d database_of_interest -q 'show tables'
# A sequence of CREATE TABLE, CREATE VIEW, and similar DDL statements
# can go into a file to make the setup process repeatable.
$ impala-shell -i localhost -d database_of_interest -f recreate_tables.sql