![a2740e161b4890be3e765a69fbe0ed0f.png](https://img-blog.csdnimg.cn/img_convert/a2740e161b4890be3e765a69fbe0ed0f.png)
SQL操作
通过impala对kudu进行sql操作
数据库操作
--描述表
DESCRIBE tabel_name;
--查看分区情况
SHOW PARTITIONS table_name;
--查看当前使用数据库
SELECT current_database();
--查看建表语句
SHOW CREATE TABLE table_name
创建数据库(creat db)
--impala创建数据库与hive一样,create database db_name,
--但是这个数据库只是一个impala端的namespace,
--kudu官网中没有提到数据库的概念,猜测可能是没有这个概念
--impala中创建表的时候比如在test数据库中创建table_test对应在kudu中为 test:table_test
--创建数据库
CREATE DATABASE IF NOT EXISTS POC_TEST;
--进入数据库
use POC_TEST;
创建表(creat table)
(1) 创建外部表,内部表
--impala创建数据库与hive一样,create database db_name,
--但是这个数据库只是一个impala端的namespace,
--kudu官网中没有提到数据库的概念,猜测可能是没有这个概念
--impala中创建表的时候比如在test数据库中创建table_test对应在kudu中为 test:table_test
--创建数据库
CREATE DATABASE IF NOT EXISTS POC_TEST;
--进入数据库
use POC_TEST;
Kudu中的分区方法主要有两种:partition by hash和partition by range
(1) Hash分区
-- 基于hash的分区方法的基本原理是:基于primary key的hash值将每个row划分到相应的tablet当中,
-- 分区的个数即tablet的个数必须在创建表语句中指定
-- 如果未指定基于某个字段的hash值进行分区,默认以主键的hash值进行分区
--主键两个字段,分区字段未指定 hash分区
create table kudu_first_table(
id int,
name string,
age int,
gender string,
primary key(id,name)
)
partition by hash partitions 4
stored as kudu;
--主键一个字段,分区字段未指定 hash分区
CREATE TABLE my_first_table
(
id BIGINT,
name STRING,
PRIMARY KEY(id)
)
PARTITION BY HASH PARTITIONS 16
STORED AS KUDU;
--表不存在则创建, 主键一个字段, 分区字段未指定 hash分区
CREATE TABLE IF NOT EXISTS POC_TEST.sdc(
id string,
name string,
PRIMARY KEY (id)
)
PARTITION BY HASH(id) PARTITIONS 2
STORED AS KUDU;
TBLPROPERTIES('kudu.master_addresses'='master.msxf.hadoop:7051','kudu.num_tablet_replicas' = '1');
--主键两个字段,分区字段指定,hash分区
create table specify_partition_column(
id int,
name string,
age int,
gender string,
primary key(id,name)
) partition by hash(id) partitions 3
stored as kudu;
--主键两个字段,分区字段指定一个字段,hash分区