Kudu 整合 impala-shell 操作 | 学习笔记

简介: 快速学习 Kudu 整合 impala-shell 操作

开发者学堂课程【NoSQL 数据库 Kudu 教程:Kudu 整合 impala-shell 操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/723/detail/12911


Kudu 整合 impala-shell 操作


内容介绍:

一、  impala 配置修改

二、  创建 kudu 表

三、  使用 impala 对 kudu 进行 DML 操作

四、  更改表属性

 

Impala 是一款类似于 hive 的软件,能够对结构化数据进行映射,对 sql 进行开展分析。kudu 恰好是一个大数据存储引擎,存储数据,类似于表结构。就可以用 impala 映射成为 kudu 中的一个表,针对表开展数据分析。

 

一、  impala 配置修改

在每一个服务器的 impala 的配置文件中添加如下配置。

vim /etc/default /impala

在 IMPALA_SERVER_ARGS 下添加:

-kudu_master_hosts=node-1:7051, node-2:7051, node-3 :7051

事实上这一项也不需要,它是一个可选项。Kudu,impala 装好之后不需要集成,直接指定它的 master 地址在哪里就可以了。

 

二、  创建 kudu 表

Kudu 表分为内部表和外部表。内部表指的是 impala 当中的数据连同 kudu 中的表都要受 impala 管理。当删除表之后,连同 impala 管理一起被删除。外部表指的是,之前 kudu 当中有了一个表,可以直接建立一个表把他映射上。

1. 内部表

内部表由 Impala 管理,当您从 Impala 中删除时,数据和表确实被删除。当您使用 Impala 创建新表时,它通常是内部表。

使用 impala 创建内部表:

CREATE TABLE my_first_table

(

id BIGINT,

name STRING,

PRIMARY KEY(id)

)

PARTITION BY HASH PARTITIONS 16

STORED AS KUDU

TBL.PROPERTIES(

'kudu.master_addresses'='nodel:7051,node2:7051,node3:7051',

'kudu.table_name’= 'my_first_table'

);

在 CREATE TABLE 语句中,必须首先列出构成主键的列,必须放在所有字段的后面。根据 HASH 分区分为16个。STORED AS KUDU 表示数据存储在 kudu 当中。

在 node-3下输入 impala-shell,在输入show databases,创建一个新的 database,输入 create database kudu_test。Use kudu_test 后输入 show tables。按照上面的方法创建好之后,就可以看到。

image.png

与此同时,数据也保存在 kudu 中,kudu 也帮我们创建了一个表。

image.png

2. 外部表

外部表(创建者 CREATE EXTERNAL TABLE )不受 lmpala 管理,并且删除此表不会将表从其源位置(此处为 Kudu )丢弃。相反,它只会去除 Impala 和 Kudu 之间的映射。这是 Kudu 提供的用于将现有表映射到 lmpala 的语法。

Kudu 中任何一个表都写好了创建外部表的 sql 语句。

CREATE EXTERNAL TABLE "student` STORED AS KUDu

TBLPROPERTIES(

'kudu.table_name'= 'student',

'kudu.master_addresses'='node-1:7051,node-2:7051,node-3:7051')

重点在数据删除。当删除一个内部表的时候,impala 中肯定没有了,kudu 中的表也被删除了。删除外部表的时候,impala 中没有了,但是 kudu 中还在。

 

三、  使用 impala 对 kudu 进行 DML 操作

1.将数据插入 Kudu 表

impala 允许使用标准 SQL 语句将数据插入 Kudu。

1) 插入单个值

创建表

CREATE TABLE my_first_table(

id BIGINT,

name STRING,

PRIMARY KEY(id))

ARTITION BY HASH PARTITIONS 16

STORED AS KUDU

TBLPROPERTIES(

'kudu.table_name ' = 'person1' ,

'kudu.master_addresses' = 'node-1:7051,node-2:7051,node-3:7051');

2) 此示例插入单个行,插入一个数字

INSERT INTO my_first_table VALUES (50,"zhangsan");

3) 查看数据

select * from my_first_table

image.png

4) 使用单个语句插入三行

INSERT INTO my_first_table VALUE(1,"john"),(2,"jane"),(3,"jim");

image.png

5) 批量插入 Batch lnsert

从 lmpala 和 Kudu 的角度来看,通常表现最好的方法通常是使用 Impala 中的 SELECT FROM 语句导入数据。示例:

INSERT INTO my_first_table

SELECT * FROM temp1;

2.更新数据

示例:

UPDATE my_first_table SET name="xiaowang" where id =1 ;

image.png

3.删除数据

示例:

delete from my_first_table where id =2;

image.png

 

四、  更改表属性

开发人员可以通过更改表的属性来更改 Impala 与给定 Kudu 表相关的元数据。这些属性包括表名,Kudu 主地址列表,以及表是否由 lmpala(内部)或外部管理。

1.Rename an lmpala Mapping Table(重命名 Impala 映射表)

ALTER TABLE PERSON RENAME To person_temp;

把 person 改成 person_temp。

image.png

2.Rename the underlying Kudu table for an internal table(重新命名内部表的基础 Kudu 表)

1) 创建内部表∶

CREATE TABLE kudu_student(

companyId INT,

workId INT,

Name STRING,

Gender STRING,

IPhoto STRING,

PRIMARY KEY(companyId))

PARTITION BY HASH PARTITIONS 16

STORED AS KUDU

TBLPROPERTIES (

'kudu.master_addresses' = 'node1:7051,node2:7051,node3:7051',

'kudu.tab1e_name' = 'student1'

);

image.png

2)如果表是内部表,则可以通过更改 kudu.table_name 属性重命名底层的 Kudu 表

ALTER TABLE kudu_student

SET TBLPROPERTIES( 'kudu.table_name' = 'new_student ');

设置一个新的属性。外面的表名没有 kudu_student。

image.png

在 kudu 中刷新,就变成 new_student

3.Remapping an external table to a different Kudu table(将外部表重新映射到不同的 Kudu 表)

如果用户在使用过程中发现其他应用程序重新命名了 kudu 表,那么此时的外部表需要重新映射到kudu上

创建一个外部表︰

CREATE EXTERNALTABLE external_table

STORED AS KUDU

TBLPROPERTIES (

'kudu.master_addresses' = 'node1:7051,node2:7051,node3:7051',

'kudu.table_name' = ' person '

);

重新映射外部表,指向不同的 kudu 表:

ALTERTABLE externa1_table

SET TBLPROPERTIES( 'kudu.table_name' = 'hashTable '

上面的操作是∶将 external_table 映射的 PERSON 表重新指向 hashTable 表。

4.Change the Kudu Master Address(更改 Kudu Master 地址)

如果 kudu master 地址发生变化:

ALTER TABLE my_tab1e

SET TBLPROPERTIES('kudu.master_addresses' = 'kudu-new-master.example.com:7051');

5.Change an Internally-Managed Table to External(将内部管理的表更改为外部)

ALTER TABLE my_table SET TBLPROPERTIES("EXTERNAL' = 'TRUE ');

image.png

这个时候 person_temp 就从内部表变成外部表了。

相关文章
|
Shell Linux C++
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
458 0
|
人工智能 机器人 Shell
【shell】shell字符串操作(声明、长度、拼接、切片、转换、替换等操作)
【shell】shell字符串操作(声明、长度、拼接、切片、转换、替换等操作)
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 控制光驱或可移动媒体设备的弹出和关闭操作 eject命令使用教程
【Shell 命令集合 磁盘管理 】Linux 控制光驱或可移动媒体设备的弹出和关闭操作 eject命令使用教程
638 1
|
存储 算法 Shell
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
450 0
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
627 0
|
分布式计算 Hadoop Shell
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
Linux Shell 文件存储
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
657 1
|
监控 Linux Shell
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!
433 0
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余