文章目录
- 1、Hive 复制一个表:
- 2、字段级操作
- 3、hdfs 文件统计
1、Hive 复制一个表:
直接Copy文件
create table new_table like table_name;
hdfs dfs -get /apps/hive/warehouse/ods.db/table_name
load data local inpath '/路径' into table new_table;
修复表:
msck repair table table_name;
分析表
analyze table table_name compute statistics;
2、字段级操作
--新增字段
alter table add columns (filed1 data_type,filed2 data_type) cascade;
--修改字段
alter table change column filed_name new_filed_name data_type
--删除字段
--如果想删除最后一个字段column_2
create table table_name (
column_1 string,
column_2 int);
--删除column_2
alter table table_name replace columns(
column_1 string) cascade; --column_2不写,即删除column_2,保留column_1
NOTE :
CASCADE会刷历史分区字段。
说明:
- 因为hive表大部分是分区表,而加上
cascade
【注:中文翻译为“级联”】关键字,不仅会变更新分区的表结构(metadata),同时也会变更旧分区的表结构。 - 当使用级联删除表中信息时,如果A表中的字段引用了B表中的字段,删除B表中字段信息,相应的A表也会删除。(当父表的信息删除,子表的信息也自动删除)
对于分区表,在增删改时,一定要加上cascade
,否则其历史分区的元数据(metadata)信息将无法正常更新,可能会出现访问历史分区时数据为NULL等问题。
3、hdfs 文件统计
hdfs dfs -ls /apps/hive/warehouse/edw.db/table_name/ | wc -l
hdfs dfs -count /apps/hive/warehouse/edw.db/table_name
第一个数值表示目录下的文件夹的个数,
第二个数值表是当前文件夹下文件的个数,
第三个数值表示该文件夹下文件所占的空间大小,这个大小是不计算副本的个数的。