Hive表的基本操作
Hive系列文章
- Hive表的基本操作
- Hive中的集合数据类型
- Hive动态分区详解
- hive中orc格式表的数据导入
- Java通过jdbc连接hive
- 通过HiveServer2访问Hive
- SpringBoot连接Hive实现自助取数
- hive关联hbase表
- Hive udf 使用方法
- Hive基于UDF进行文本分词
- Hive窗口函数row number的用法
- 数据仓库之拉链表
1. 创建表
create table
语句遵从sql
语法习惯,只不过Hive
的语法更灵活。例如,可以定义表的数据文件存储位置,使用的存储格式等。
没有指定external
关键字,则为管理表
,跟mysql
一样,if not exists
如果表存在则不做操作,否则则新建表。comment
可以为其做注释,分区为age
年龄,列之间分隔符是\t
,存储格式为列式存储orc
,存储位置为默认位置,即参数hive.metastore.warehouse.dir
(默认:/user/hive/warehouse)指定的hdfs
目录。
2. 拷贝表
使用like
可以拷贝一张跟原表结构一样的空表,里面是没有数据的。
3. 查看表结构
通过desc [可选参数] tableName
命令查看表结构,可以看出拷贝的表test.user1
与原表test.user1
的表结构是一样的。
也可以加formatted
,可以看到更加详细和冗长的输出信息。
4. 删除表
这跟sql
中删除命令drop table
是一样的:
对于管理表(内部表),直接把表彻底删除了;对于外部表,还需要删除对应的hdfs
文件才会彻底将这张表删除掉,为了安全,通常hadoop
集群是开启回收站功能的,删除外表表的数据就在回收站,后面如果想恢复也是可以恢复的,直接从回收站mv
到hive
对应目录即可。
5. 修改表
大多数表属性可以通过alter table
来修改。
5.1 表重命名
5.2 增、修、删分区
增加分区使用命令alter table table_name add partition(...) location hdfs_path
修改分区也是使用alter table ... set ...
命令
删除分区命令格式是alter table tableName drop if exists partition(...)
5.3 修改列信息
可以对某个字段进行重命名,并修改位置、类型或者注释:
修改前:
修改列名time
为times
,并且使用after
把位置放到url
之后,本来是在之前的。
再来看表结构:
time -> times
,位置在url
之后。
5.4 增加列
hive
也是可以添加列的:
5.5 删除列
删除列不是指定列删除,需要把原有所有列写一遍,要删除的列排除掉即可:
如果要删除列salary
,只需要这样写:
这里会报错:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Replacing columns cannot drop columns for table test.user3. SerDe may be incompatible
这张test.user3
表是orc
格式的,不支持删除,如果是textfile
格式,上面这种replace
写法是可以删除列的。通常情况下不会轻易去删除列的,增加列倒是常见。
5.6 修改表的属性
可以增加附加的表属性,或者修改属性,但是无法删除属性:
举例:这里新建一张表:
这条语句将t8表中的字段分隔符'#'修改成'\t';
alter table t8 set serdepropertyes('field.delim'='\t');
作者:柯广的网络日志
微信公众号:Java大数据与数据仓库