本文为您介绍几种连接 Impala 的方式。
使用 impala-shell 连接 Impala,详情可参看:impala-shell 工具。
可以使用 Hive 的 JDBC Driver 连接 Impala。
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.9</version> </dependency>
package com.example; import java.sql.*; public class App { public static void main( String[] args ) throws Exception { String driverName = "org.apache.hive.jdbc.HiveDriver"; Class.forName(driverName); // 1. 如果 impala 开启了 LDAP 认证,还需要提供用户名密码 // 2. Connection conn = DriverManager.getConnection("jdbc:hive2://<Impala 所部署的节点>:21050/;auth=noSasl"); Connection conn = DriverManager.getConnection("jdbc:hive2://180.xxx.xx.xx:21050/default;auth=noSasl"); Statement stmt = conn.createStatement(); stmt.executeUpdate("drop table if exists my_table"); stmt.close(); stmt = conn.createStatement(); stmt.executeUpdate("CREATE TABLE my_table ( id INT) STORED AS PARQUET"); stmt.close(); stmt = conn.createStatement(); stmt.executeUpdate("insert into my_table values(1)"); stmt.close(); stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from my_table"); while (rs.next()) { System.out.println("id=" + rs.getLong("id")); } rs.close(); stmt.close(); conn.close(); } }
下文描述了在本地如何使用数据库工具连接云上的 Impala。
登录 EMR 控制台。
在左侧导航栏中,选择并进入 集群列表 > 集群名称 > 服务列表 > Impala 界面。
展开部署拓扑中,单击 Statestored 所在的 ECS 实例,进入 ECS 实例详情页界面。
在 ECS 的实例详情页进行 公网 IP 的绑定。详见:绑定公网IP
为集群 master-1 节点绑定公网 IP 后,并记录该公网 IP 地址。
在 master-1 的 ECS 实例详情页,上方点击 【安全组】页签,进入修改安全组的访问规则页面。
点击左侧 操作 栏中的【配置规则】,进入安全组列表页面。
点击 访问规则 > 入方向规则 > 添加规则,添加本地机器的 IP 地址(可以通过 该连接 查看),和 21050 的端口范围。
点击 确认 按钮,完成安全组添加。
下文以 DBeaver 为例介绍如何连接 Impala。
编辑连接配置
其中:
JDBC URL:jdbc:hive2://xxx.xx.xx.xx(公网IP):21050
主机:为 master-1 的公网 IP。
端口:21050。
驱动属性添加 auth=noSasl
连接后,我们可以看到相应的 Impala 数据库信息。