You need to enable JavaScript to run this app.
导航

Impala 集成 Kudu

最近更新时间2022.10.24 14:21:05

首次发布时间2022.10.21 16:56:21

1 Impala 简介

Impala 是一个分布式的大型并行处理(MPP)计算引擎。利用 Impala ,可以对 Kudu 的数据做快速查询分析。详见请参见:Impala 概述

2 使用前提

  1. 已创建包含 Kudu、Impala 组件服务的 EMR 集群,详见:创建集群
  2. 目前 Kudu、Impala 组件是白名单开放,您可通过 创建工单 的方式,申请使用。

3 Impala 集成 Kudu

在火山引擎 E-MapReduce(EMR)中,安装完 Impala 和 Kudu 之后,需要在 Impala 设置 Kudu Master 的地址。

说明

如果 Impala 和 Kudu 同时安装,那么,kudu_master_hosts 会自动设置,无需再手动设置。

  1. 登录 EMR 控制台

  2. 在左侧导航栏中,选择并进入 集群列表 > 集群名称 > 服务列表 > Impala 界面。

  3. 点击进入 服务参数 页签,搜索参数:kudu_master_hosts。

  4. 设置参数的值为 Kudu Master 的地址,如下图所示:
    Kudu Master 地址获取,详见:Kudu 基础操作

  5. 参数配置完成后,点击右上角 保存 按钮,然后 服务操作中 重启 Impalad 服务。

4 使用 Impala 访问 Kudu

下文为您介绍如何使用 Impala 访问 kudu ,包括创建表,写入数据,查询数据。支持多种方式连接 impala,下文主要使用 impala-shell 这个工具。

4.1 impala-shell

impala-shell 是一个可以直接连接 impala 的命令行工具。火山引擎 EMR 在安装 impala 时,已默认将 impala-shell 设置到系统环境变量,可以 ssh 到任意一台 impalad 机器,使用 impala-shell。
登录方式详见:SSH连接主节点
例如:

root@emr-3432jdr2za2uxxx-core-1:~# impala-shell
***********************************************************************************
Welcome to the Impala shell.
(Impala Shell v3.4.1-RELEASE (eb1ed66) built on Fri Sep 16 15:03:38 CST 2022)

The SET command shows the current value of all shell and query options.
***********************************************************************************
[emr-3432jdr2za2uxxx-core-1:21000] default>

4.2 创建 Kudu 表

CREATE TABLE my_first_table
(
  id BIGINT,
  name STRING,
  PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU
TBLPROPERTIES ('kudu.num_tablet_replicas' = '1');

例如:

[emr-3432jdr2za2uxx-core-1:21000] default> CREATE TABLE my_first_table
                                               > (
                                               >   id BIGINT,
                                               >   name STRING,
                                               >   PRIMARY KEY(id)
                                               > )
                                               > PARTITION BY HASH PARTITIONS 16
                                               > STORED AS KUDU
                                               > TBLPROPERTIES ('kudu.num_tablet_replicas' = '1');
Query: CREATE TABLE my_first_table
(
  id BIGINT,
  name STRING,
  PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU
TBLPROPERTIES ('kudu.num_tablet_replicas' = '1')
+-------------------------+
| summary                 |
+-------------------------+
| Table has been created. |
+-------------------------+
Fetched 1 row(s) in 2.36s

4.3 写入数据

[emr-3432jdr2za2uxx-core-1:21000] default> insert into my_first_table values(1, 'Tom');
Query: insert into my_first_table values(1, 'Tom')
Query submitted at: 2022-09-28 11:48:46 (Coordinator: http://emr-3432jdr2za2uxx-core-1:25000)
Query progress can be monitored at: http://emr-3432jdr2za2uxx-core-1:25000/query_plan?query_id=f74dc7a765xxx:15c929b200000000
Modified 1 row(s), 0 row error(s) in 5.76s

4.4 查询数据

[emr-3432jdr2za2uxx-core-1:21000] default> select * from my_first_table;
Query: select * from my_first_table
Query submitted at: 2022-09-28 11:49:22 (Coordinator: http://emr-3432jdr2za2uxx-core-1:25000)
Query progress can be monitored at: http://emr-3432jdr2za2uxx-core-1:25000/query_plan?query_id=87477e01xxx:8a3f74d300000000
+----+------+
| id | name |
+----+------+
| 1  | Tom  |
+----+------+
Fetched 1 row(s) in 0.33s