Kudu之SQL操作(KUDU&Impala基本操作)

您所在的位置:网站首页 alter总代在哪 Kudu之SQL操作(KUDU&Impala基本操作)

Kudu之SQL操作(KUDU&Impala基本操作)

2024-01-20 13:45| 来源: 网络整理| 查看: 265

参考文章:KUDU&Impala基本操作

使用impala对kudu进行DML操作

kudu insert data api

kudu官网impala操作kudu表

说明

通过Java client等其他方式在kudu中创建了某个表,要想对该表进行操作,需要在impala中创建外部表,将其映射到impala当中

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)

创建表的注意事项

(0) 创建外部表,内部表 --创建外部表 --假设已经通过Java client等其他方式在kudu中创建了某个表, --要想对该表进行操作,需要在impala中创建外部表,将其映射到impala当中,例如: CREATE EXTERNAL TABLE my_mapping_table STORED AS KUDU TBLPROPERTIES('kudu.table_name' = 'my_kudu_table'); --创建内部表 --假设要通过impala创建一个新的kudu表,需要在impala中创建一个内部表,例如: CREATE TABLE  testinkudu(…………) partition  by hash  partitions  8 STORED AS  KUDU [AS SELECT * FROM OTHER_TABLE]; --注:创建内部表时,类似partition by ………stored as kudu的分区声明语句是必须的。 --无论是 通过client创建的kudu表还是通过impala创建的表, --都可以在master节点的UI界面的tables选项中查看

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分区 create table specify_partition_one_column( id int, name string, age int, gender string, primary key(id) ) partition by hash(id) partitions 3 stored as kudu; --区别:未指定分区字段时,其分区字段默认是主键,若主键有两个列则分区字段为两个,指定分区字段时, -- 需要分区列是主键的子集;否则会报错「 Only key columns can be used in PARTITION BY」 --不指定分区:表依然会创建,但是只有一个分区,会提示「Unpartitioned Kudu tables are ineff (2) range分区:主要针对时间进行range分区  -- 基于range的分区方法的基本原理是:基于指定主键的取值范围将每个row划分到相应的tablet当中, -- 用于range分区的主键以及各个取值范围都必须在建表语句中声明 CREATE TABLE cust_behavior ( _id BIGINT PRIMARY KEY, salary STRING, edu_level INT, usergender STRING, `group` STRING, city STRING, postcode STRING, last_purchase_price FLOAT, last_purchase_date BIGINT, category STRING, sku STRING, rating INT, fulfilled_date BIGINT ) PARTITION BY RANGE (_id) ( PARTITION VALUES < 1439560049342, PARTITION 1439560049342


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3