任何人都可以帮我解决如何编写Pig脚本以满足以下要求吗? 想象一下1,2,3,4天和100,120等代表到目前为止的行程距离。问题是如何使用Pig脚本找出每天行进的距离?
输入文件:
1 100
2 120
3 165
4 193
预期产出:
1 100
2 20
3 45
4 28
感谢您的帮助!
答案 0 :(得分:0)
请检查以下代码:
data = load'dataa'使用PigStorage()as(seq:int,value:int);
firstrow =通过seq == 1过滤数据;
newdata = foreach数据生成seq + 1作为newseq,值作为newval;
join =由seq连接数据,newdata由newseq连接;
remainingrows = foreach join生成data :: seq as seq,data :: value - newdata :: newval as value;
out = union firstrow,剩余部分;
倾销;
只要第一列包含唯一编号,此代码就可以正常工作。如果没有这样的规定,那么将使用map-reduce程序生成数字,然后应用相同的逻辑。