pig min命令和命令

mmvthczy  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(374)

我有壳牌的数据,917.14美元,654.23美元
我必须找出$1和$2列中的最小值
我试着按这些列按asc顺序排序
但答案并不正确。有人能帮忙吗?

6ie5vjzr

6ie5vjzr1#

参考最小值

  1. A = LOAD 'test1.txt' USING PigStorage(',') as (f1:chararray,f2:float,f3:float,f4:int,f5:int,f6:int);
  2. B = GROUP A ALL;
  3. C = FOREACH B GENERATE MIN(A.f2),MIN(A.f3);
  4. DUMP C;


edit1:您正在加载的数据中有“$”。您必须清除它并将其加载到float字段以应用min函数,或者将其加载到chararray并替换“$”,然后将其强制转换为float并应用min函数。
edit2:这是一个解决方案,不删除原始数据中的$,而是在pigscript中处理它。
输入:

  1. shell,$820.48,$11992.70,996,891,1629
  2. shell,$817.12,$2105.57,1087,845,1630
  3. Bharat,$974.48,$5479.10,965,827,1634
  4. Bharat,$943.70,$9162.57,939,895,1635

Pig笼草

  1. A = LOAD 'test5.txt' USING TextLoader() as (line:chararray);
  2. A1 = FOREACH A GENERATE REPLACE(line,'([^a-zA-Z0-9.,\\s]+)','');
  3. B = FOREACH A1 GENERATE FLATTEN(STRSPLIT($0,','));
  4. B1 = FOREACH B GENERATE $0,(float)$1,(float)$2,(int)$3,(int)$4,(int)$5;
  5. C = GROUP B1 ALL;
  6. D = FOREACH C GENERATE CONCAT('$',(chararray)MIN(B1.$1)),CONCAT('$',(chararray)MIN(B1.$2));
  7. DUMP D;

输出

展开查看全部

相关问题