hive命令3
1.重命名表 --stud:表名
create external table stud (state string) location ‘/opt/stud’;
alter table stud rename to stud_old;
2.修改表的存储属性
(1)alter table
(2)删除该表,然后重新创建表,修改create table中的存储属性
3.orc文件格式
将states表转换成orc文件格式并且查看其属性
create table states_orc stored as orc tblproperties(“orc.compress”=“snappy”)
as select * from states;
4.hadoop中处理小文件将会大量耗费大量的namenode元数据记录,所以通常合并小文件
hdfs的namenode进程维护了hdfs上所有文件的元数据
对于以rcfile或orcfile格式存储的hive表,可以做下面的操作,将多个数据文件合并成一个
alter table states concatenate;
5.避免小文件的方式之一(推荐),在数据进入hadoop之前,将它们合并成集群数据块
数倍大小的文件,通常为好几GB或者更大。在数据进入hadoop之后,有很多的方式整合,
但hadoop处理小文件并不在行,因此这样合并速度会比较慢。
6.hive表分区
hive中的分区表有一个或多个分区键,基于这些键,数据被分割成若干逻辑块并存放在单独
的路径中。每个分区键都为表的存储添加了一个目录层结构。
7.hive表分区代码案例
create external table retail.transactions(
transdate date,
transid int,
custid int,
fname string //注意:最后一个属性不要打逗号
)
partitioned by (store string);
本例中的表基于一个名为store(存放商店的名称)的字符串列进行分区。
注意:在分区中用到的列实际上在create table 结构中并不存在。
8.当你查询一个分区表时,分区的值会作为该分区中所有行在这一列的值,例
select * from retail.transactions 将返回store列的值,即使数据库中兵没有
存储这样的数据。
9.创建分区表需要你预先为底层分区创建目录结构。对于内部表的情形,当你使用insert
命令将数据插入新分区时,分区目录是自动创建的。
10.注意:不能在实际的表定义中加入分区键列,否则报错
failed:error in semantic analysis:column repeated in patitioning columns错误