从零自学Hadoop(24):Impala相关操做上

  阅读目录

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文连接,谢谢合做。html

文章是哥(mephisto)写的,SourceLink数据库

 

     上一篇,咱们介绍Impala的介绍及安装。oop

   下面咱们开始继续进一步的了解Impala的相关操做。性能

数据库相关

一:建立

  在这里,数据库就是一个目录结构,固然对于的元数据还会持久化到关系型数据库。优化

create database dbtest;

二:查看

  能够查看当前可用的数据库。spa

show databases;

三:删除

  删除制定的数据库,会删除数据库中的表,及数据,hdfs文件。数据库对于的hdfs目录结构也会被删除。3d

drop database dbtest1;

四:切换当前数据库

  默认的是default数据库,切换了后,能够直接使用当前数据库中的表。code

use dbtest;

 

表相关

一:建立

create table student
(
id string  ,
name string  ,
sex  string     ,
birthday  timestamp 
);

二:建立分区表

  分区表能够根据存放数据,这样在分析的时候,能够只使用对应分区的数据,能够大大的下降检索的数据量,提升分析性能。orm

create table student_p
(
id string  ,
name string  ,
sex  string     ,
birthday  timestamp 
)
partitioned by (year string,month string,day string);

  这里定义了year,month,day 这3层分区。htm

三:查看代表细

  显示表的元数据,包括列名,类型等等。

desc student;

 

 

 

  formatted参数能够显示更多信息,显示格式与hive相似。包括底层详细信息,建立时间,格式,hdfs文件位置等等。

desc formatted student_p;

四:查看当前数据库已有的表

show tables;

五:HDFS目录

  能够看到在dbtest.db的目录下有两个咱们建好表的目录。

 六:修改表

  ALTER TABLE 语句用来修改现有表的结构或属性。在 Impala 里,这是一个逻辑操做,更新了 Impala 和 Hive 共用的 metastore 数据库中表的元数据; ALTER TABLE 语句不会对实际的数据文件进行重写、移动等操做。所以,你可能须要相应的物理文件系统操做才能实现移动数据文件到不一样的 HDFS 目录,重写数据文件来包含其余字段,或转换成不一样的文件格式。

七:重命名表

alter table student rename to student1;

  对于内部表,这一操做实际地修改了包含数据文件的 HDFS 目录名;原始目录将再也不存在。

八:增长列  

alter table student1 add columns (addr string);

九:替换列  

alter table student1 replace columns(id int,name string, sex string,tel int);

  当替换列时,原有列的定义都被废弃。你可能会在收到一组新的有不一样数据类型或不一样顺序的列的数据文件时使用这一技术(数据文件会被保留,所以当新列与旧列不兼容时,须要在执行进一步的查询前,使用 INSERT OVERWRITE 或 LOAD DATA OVERWRITE 语句替换全部的数据)。

能够看到。咱们将原有列的结构,类型作了很大的替换。

十:修改列

   修改列能够改变列的名字和类型

alter table student1 change id idstr string;

十一:删除列

alter table student1 drop tel;

十二:修改文件格式

alter table student1 set fileformat parquet;

  由于本操做只是修改表的元数据,对现存的数据,你必须使用 Impala 以外的 Hadoop 技术对已有的数据进行转换。以后再在 Impala 中使用 INSERT 语句建立的数据将使用新的格式。你不能指定文本文件的分隔符;文本文件的分隔符必须是逗号。

十三:增长分区

alter table student_p add partition(year='2017',month='07',day='24');

  能够看到hdfs中student_p的下面有个3层目录结构。

重复上面增长分区的操做,分别添加22,23日的分区。

 

十四:删除分区

  删除day=22的分区。

alter table student_p drop partition(year='2017',month='07',day='22');

 能够看到该表只有23,24两个分区。hdfs对应的目录会被删除。因此该分区的实际文件也会被删除。

十五:查看表的统计状态

show table stats student_p;

  上述语句中使用到这个,能够看到每一个分区的状态,若是有数据,还会统计行数,文件数,大小等等。

十六:查看表的列统计

show column stats student_p;

  

十七:采集表的统计

compute stats student_p;

  采集相关表和相关列的统计状况。COMPUTE STATS 语句是从底层向上构建,以提升可用性和用户友好度。你能够运行一个单独的 Impala COMPUTE STATS 语句来采集包括 table 和 column 的统计信息,而不是为表和列的统计信息分别运行 Hive ANALYZE TABLE 语句。

  COMPUTE STATS 也能够采集 HBase 表的信息。采集的 HBase 表的统计信息与 HDFS-backed 表的有所不一样,但当 HBase 表执行链接查询时,统计信息仍被用于优化。
  COMPUTE STATS执行完后,这些统计信息被存放在 metastore 数据库中,能够为impala用来优化查询。

 

 

  

--------------------------------------------------------------------

  到此,本章节的内容讲述完毕。

系列索引

  【源】从零自学Hadoop系列索引

 

 

 

 

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文连接,谢谢合做。

文章是哥(mephisto)写的,SourceLink

相关文章
相关标签/搜索