安装包地址:https://mirrors.tuna.tsinghua.edu.cn/apache/pig/
前提:Hadoop安装成功
pig安装部署:
1.将准备好的安装包上传到虚拟机rz
2.查看是否上传成功
3.解压缩
命令:tar xf pig-0.13.0.tar.gz
4.将解压缩后的文件移动到/opt目录下(因为我的一些有关实验都在这个目录下,所以移动到这个目录下,方便之后的管理)
5.编辑文件/etc/profile,然后保存文件,并让文件生效source /etc/profile
6.测试是否安装成功,使用pig命令进入,然后使用sh ls查看测试,能和增长运行表示成功。
实例:
在本地文件系统创建三个文件student.txt,course.txt,sc.txt,分别存储学生信息,课程信息,选课信息。实现找出成绩少于80的学生,并且输出学生的姓名和对应课程和成绩。样例数据如下:
图1 学生信息(学号,姓名,性别,年龄,专业)
图2 课程信息(课号,课程名,学分)
图3 成绩信息(学号,课号,成绩)
解答:
1.在本地文件系统创建三个文件student.txt,course.txt,sc.txt,文件内容图下:
2.将文件上传到hdfs下:(这里创建一个目录pig_test,专门存放这三个文件)然后查看是否上传成功
3.将这三个文件内容在pig上进行加载,分别使用变量a,b,c去接收。命令与截图如下:
a = load '/pig_test/student.txt' using PigStorage(':') as (sno:chararray,sname:chararray,sex:chararray,age:int,dept:chararray);
b = load '/pig_test/course.txt' using PigStorage(',') as (con:chararray,cname:chararray,grade:chararray);
c = load '/pig_test/sc.txt' using PigStorage(',') as (sno:chararray,cno:chararray,score:float);
4.因为要求低于80分的学生信息,但是在每一个表中,都没有全面的而对应信息,所以使用join连接这些表,首先连接a与c(首先连接哪两个看个人意愿),两个里面都有sno,根据sno去连接。
使用dump命令去查看连接的内容
查看连接内容如下:
5.然后可以查看连接后的各个字段信息:
命令:describe a_join_c;
6.在连接a_join_c与另外的一个b(里面的c::cno是因为在c表中有与b表相同的一个内容,需要使用相同字段连接,而且连接是在a_join_c,这个里面的表字段比较多,这样写还便于区分)(使用了如下命令之后,都可以使用dump 变量名 的格式去查看变量里面的内容)
使用dump命令查看,内容如下:
7.使用filter去筛选成绩少于80的学生信息。
运行结果:
8.在成绩少于80的学生信息中,去查找学生姓名,对应课程名与成绩。
dump命令查看后的结果如下:
9.实验整个过程的历史纪录: