四十一、centos安装pig(Pig的应用)
环境搭建:
一、pig的安装:
1、官网地址pig-0.17.0
Welcome to Apache Pig!https://pig.apache.org/ 2、解压:
tar -zxvf pig-0.17.0.tar.gz -C /home
3、重命名:
mv pig-0.17.0 pig
4、编辑环境变量:
vim /etc/profile
5、使环境变量立即生效:
source /etc/profile
6、启动测试:
a、进入本地模式:
pig -x local
b、进入MapReduce模式:
pig -x mapreduce
Pig安装完成
二、Pig的应用:
A、计算多维度组合下的平均值
1、创建测试数据文件:
vim data1.txt
-
a 1 2 3 4.2 9.8
-
a 3 0 5 3.5 2.1
-
b 7 9 9
-
a 7 9 9 2.6 6.2
-
a 1 2 5 7.7 5.9
-
a 1 2 3 1.4 0.2
注:此处内容使用Tab键分割
2、进入本地调试模式:
pig -x local
3、使用pig计算data1.txt第2.3.4列的所有组合中,最后两列的平均值分别为多少:
-
A = LOAD 'data1.txt' AS (col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);
-
B = GROUP A BY(col2,col3,col4);
-
c = FOREACH B GENERATE group,AVG(A.col5),AVG(A.col6);
-
DUMP c;
Pig输出结果如下:
注:语句需要一行一行输入执行,可以看到Pig输出结果完全正确
B、统计数据行数
1、统计A中含col2字段的数据有多少行:
-
A = LOAD 'data1.txt' AS (col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);
-
B = GROUP A ALL;
-
C = FOREACH B GENERATE COUNT(A.col2);
-
DUMP C;
2、查看结果:
注:这和SQL的Count统计数据行数一样,可以看到结果为 6
C、Pig中使用Shell进行辅助数据处理
1、创建测试数据data2.txt
vim data2.txt
-
1 5 98 = 7
-
34 8 6 3 2
-
62 0 6 = 65
2、将数据中第四列的 “=” 全部替换为9999:
-
A = LOAD 'data2.txt' AS (col1:int,col2:int,col3:int,col4:chararray,col5:int);
-
B = STREAM A THROUGH 'awk'{if($4 == "=") print $1"\t"$2"\t"$3"\t9999\t"$5; else print $0}'`;
-
DUMP B;
-
3、查看结果:
D、向Pig脚本中传入参数
假设Pig脚本输出的文件是通过外部参数指定的,则此函数不能写死,需要传入
1、在Pig中,传入参数的语句如下:
STORE A INTO '$output_dir';
其中,output_dir就是传入的参数。在调用Pig的Shell脚本时,可以使用以下语句传入参数
pig -param output_dir="/home/my_output_dir/" my_pig_script.pig
这里传入的参数output_dir的值为“ /home/my_output_dir/ ”
centos安装pig(Pig的应用)完成
文章来源: tuomasi.blog.csdn.net,作者:托马斯-酷涛,版权归原作者所有,如需转载,请联系作者。
原文链接:tuomasi.blog.csdn.net/article/details/121156854
- 点赞
- 收藏
- 关注作者
评论(0)