【问题标题】:How to convert target values with pig?如何用猪转换目标值?
【发布时间】:2018-11-10 23:23:30
【问题描述】:

我有一些目标为 4 个值的数据,我希望其中三个成为使用 latin pig 的单个数据的一部分。

Input:                     Output:
ID     | Target            ID     | Target    
-----------------          -----------------
test1      1               test1      1
test2      1               test2      1
test3      2               test3      2
test4      2               test4      2
test5      3               test5      2
test6      4               test6      2
test7      2               test7      2

有人知道最好的方法

【问题讨论】:

  • 哪三个值必须变成2?
  • 所有值 2、3 和 4,如 2。

标签: hadoop apache-pig


【解决方案1】:

使用Bincond 检查目标值是否大于 1,如果为真,则将其替换为您想要的值,在本例中为 2。

A = LOAD 'data.txt' USING PigStorage('\t') AS (Id:chararray,target:int);
B = FOREACH A GENERATE Id,(target > 1 ? 2 : target);
DUMP B;

【讨论】:

  • 如果目标是 chararray 而不是 int,请再问一个问题。可以使用 bincond 运算符,还是仅用于数值运算,我应该使用另一个运算符吗?当然,也会将负载的 squema 更改为 chararray。
  • 您也可以将其用于 chararray。在这种情况下,您将无法检查 >。您将不得不检查“2”、“3”、“4”。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 2015-11-28
  • 2013-05-05
  • 1970-01-01
  • 2017-09-09
相关资源
最近更新 更多