渡人自渡 发表于 2017-12-16 21:43:31

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


一:创建
  

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



二:创建分区表
  分区表可以根据存放数据,这样在分析的时候,可以只使用对应分区的数据,可以大大的降低检索的数据量,提高分析性能。
  

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

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


三:查看表明细
  显示表的元数据,包括列名,类型等等。
  

desc student;  



  formatted参数可以显示更多信息,显示格式与hive类似。包括底层详细信息,创建时间,格式,hdfs文件位置等等。
  

desc formatted student_p;  



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

show tables;  



五:HDFS目录
  可以看到在dbtest.db的目录下有两个我们建好表的目录。


六:修改表

  ALTER TABLE 语句用来修改现有表的结构或属性。在 Impala 里,这是一个逻辑操作,更新了 Impala 和 Hive 共用的 metastore 数据库中表的元数据;>
七:重命名表
  

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>  



十一:删除列
  

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用来优化查询。
  --------------------------------------------------------------------
  到此,本章节的内容讲述完毕。

页: [1]
查看完整版本: 从零自学Hadoop(24):Impala相关操作上