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

事实上这一项也不需要,它是一个可选项。Kuduimpala 装好之后不需要集成,直接指定它的 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_testUse 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 就从内部表变成外部表了。

相关文章
|
6月前
|
人工智能 机器人 Shell
【shell】shell字符串操作(声明、长度、拼接、切片、转换、替换等操作)
【shell】shell字符串操作(声明、长度、拼接、切片、转换、替换等操作)
|
6月前
|
Shell Linux C语言
【Shell 命令集合 磁盘管理 】Linux 控制光驱或可移动媒体设备的弹出和关闭操作 eject命令使用教程
【Shell 命令集合 磁盘管理 】Linux 控制光驱或可移动媒体设备的弹出和关闭操作 eject命令使用教程
111 1
|
6月前
|
Shell Linux C++
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
Linux C/C++ 开发(学习笔记二):Shell脚本编程案例
106 0
|
6月前
|
存储 算法 Shell
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
【Shell 命令集合 磁盘维护 】Linux 对软盘进行格式化操作 fdformat命令使用指南
81 0
|
6月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
157 0
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
存储 Java Shell
shell学习笔记(详细整理)
这篇文章是一份详细的Shell学习笔记,涵盖了Shell的基础知识、脚本编写、变量、运算符、条件判断、流程控制、函数以及常用Shell工具的使用。
39 1
|
6月前
|
分布式计算 Hadoop Shell
|
6月前
|
Linux Shell 文件存储
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(深入df和dh的区别和探索)
187 1