1、查看数据库
2、创建数据库,db_hive为数据库名;
显示创建后的数据库
创建数据库db_hive2,并指定在HDFS上的存储位置:
location 指定数据库在HDFS中的地址,不指定时默认使用数据仓库地址。
上述命令执行成功后,若HDFS目录/HBase/data/hbase目录中不存在db_hive2则会自动创建。
创建db_hive,并添加注释“hive database”:
commect 添加注释:
创建数据库db_hive,并定于相关属性
with dbproperties 指定数据库的属性信息,属性名与属性值均可以自己定义
3、修改数据库
修改数据库的自定义属性 :
创建testdb数据库,然后使用desc命令查看testdb的数据库默认描述信息
执行命令给testdb添加自定义属性createtime:
修改数据库所有者:
修改数据库testdb的所有者用户为root1,
此时查看数据库testdb的描述信息,发现所有者用户变为了root1:
4、选择数据库
选择一个数据库作为后续的HIVEQL的执行数据库,
hive中默认了一个数据库default,切换为默认命令;
5、删除数据库
删除数据库testdb,若数据库中无表数据则删除成功,若数据库中有表数据则抛出异常
删除数据库testdb,无论数据库中是否如有表数据都将强制删除;
6、显示数据库
过滤显示数据库前缀为db_hive的所有数据库
查看当前所使用的数据库
hive表由实际存储的数据和元数据组成,实际数据一般存储与HDFS中,元数据一般存储与关系型数据库中;
内部表
1、创建表,使用数据库test_db:
创建student表,其中字段id为整型,字段name为字符串:
然后查看数据仓库目录生成的文件,可以看到数据仓库目录中的test_db文件夹下有一个名为student的文件夹
2、查看表结构
显示详细表结构,包括表的类型以及在数据仓库的位置信息:
3、向表中插入数据
4、查询表中数据
5、将本地文件导入hive
新建学生分数表score,其中学号sno为整型,姓名name为字符串,得分为score为整型,并指定tab键作为字段分隔符:
在本地目录/home中新建score.txt文件。并写入以下内容,列之间用tab键隔开:
查询表的所有数据
查看数据仓库对应的数据文件
6、删除表
外部表
1、创建外部表时,如果不指定location关键字,则默认将表创建于数据仓库目录中:
在数据库test_db中创建外部表emp:
上述可以看到生成了一个文件夹emp,不用的文件可以删除,可以很清晰的保留需要的文件
创建外部表时,如果指定location关键字,则将表创建于指定的HDFS位置:
在数据库test_db中创建外部表emp2,并指定在HDFS中的存储目录为/HBase/data,表字段分隔符为Tab键:
在本地目录/home/hadoop下创建文件emp.txt,并将文件导入表emp2.
查看HDFS目录/input/hive中生成的文件
查看导入的文件内容
查看表emp2的数据
删除表时不会删除实际数据,但元数据会被删除
在数据库test_db中创建外部表emp3,并指定表数据所在的hdfs中的存储目录为
/HBase/data
查询emp3的所有数据
分区表
将student表的年龄age和性别列gender同时指定为分区列:
加载数据命令:
创建分区表
在数据库testa_db中创建分区表student2,表student包含四列,将年龄作为分区列:
导入数据,并指定分区值为age=17
查看HDFS数据仓库中表student目录中的文件,发生生成了一个名为age=17的文件夹,且文件fiel1.txt也导入发哦了该文件夹中,
查询分区表数据
使用关键字union关键字将多个分区联合查询
删除分区
同时删除多个分区
查看分区
分桶表
一个分区会存储一个目录,数据文件存储在目录中,一个分桶存储一个文件,数据内容存储在该文件中
1、分桶操作
查看表user_info的描述信息
2、向分桶表中导入数据
发现上述错误,Hive默认不支持通过load命令导入数据到分桶表,可以通过中间表导入,先将数据导入一张中间表中,然后通过insert ....select的方式,将普通表的数据导入到分桶表:
创建一张中间表
向中间表中导入数据
向中间表的数据导入到分桶表