Hive练习:
环境准备:jdk、hadoop并配置、下载安装并解压hive
使用时先启动hadoop的hdfs和yarn集群、然后在hive/bin下执行hive
Hive基础指令练习:显示数据库,使用数据库,显示表。
创建数据库gh,使用gh,创建stu表;
向stu中插入数据并查看:
先在/root/下创建aa.txt并提前写入数据,然后执行如下:
通过加载当前文件系统中的文件数据到表中:
出现null的原因是外部导入格式不同
删除重新创建stu表并指定其分割符为空格,并将aa.txt写入并查看:
此处测试失误,将stu2改成stu即可,写入数据按照上图方式写入,忽略第二条命令:
创建一张表结构和stu相同的表,并将stu上数据插入到新建表:
将stu3改名为stu2
分区表演示:
创建分区表book:
在Linux系统中创建出两个文件如下:
将数据以分区的方式插入book表中:
可看到hdfs上book表的变化:
使用分区方式查看:
以目录的方式添加分区:
- 在Linux中创建一个文件:
- 在hdfs上创建分区目录category=dn并把dnbook.txt传入:
在hdfs上可以看到:
这时候只是上传了文件,要想通过hive管理使用分区,执行如图:select查看book表如图:
分区+外部表案例:
在hdfs上创建目录并传入文本文件,使用hive最终可以查看到所有数据:
- 在hdfs上创建data目录,在data下创建两个子目录作为分区文件:rtime=05-13、rtime=05-14
- 向两个子目录中分别传入文件1.txt,2.txt 文件内容如下:
在hdfs上我们可以看到:
- 接下来在hive中创建表,并给该表添加分区数据:
图中先创建外部表分区表t1,然后将hdfs上分区数据写入,最后查看数据。
Hive数据类型:
数组:
- 准备如数据上传到hdfs的/hive/ex目录下
- 执行如下命令创建表,指定类型数组:
- 可通过类似Java的访问数组方式访问数据:
Map:
准备数据:
创建表并上传数据(此处我使用的是本地导入):
使用以下方式查询zhangsan年龄:
Struct:
数据仍使用
创建struct数据类型的表:
查询(类似Java对象的使用方法):查询s1所有name、age,查询age=31的名字: