在 Return 函数值上使用 Pig 的 ORDER BY

Using Pig's ORDER BY on Return Value of Function

我正在尝试在日期字符串列 date_time_stamp 上使用 Pig 进行排序,但是当函数对列/字段进行操作时,它似乎无法排序。

C = ORDER B BY ToDate(date_time_stamp, 'dd-MMM-yy hh.mm.ss.SSSSSS a') ASC;

这是一个示例数据:

19-JUN-15 04.45.00.000000 PM,6
20-JUN-15 11.15.00.000000 AM,5
19-JUN-15 07.15.00.000000 AM,17
21-JUN-15 12.00.00.000000 AM,0
20-JUN-15 12.35.00.000000 PM,33

如何对函数操作的列进行排序?

根据文档:http://pig.apache.org/docs/r0.12.0/basic.html#order-by

  1. 执行 ORDER BY 的 field_alias 应该出现在关系/别名中。

  2. Pig 目前支持对具有简单类型的字段或元组指示符 (*) 进行排序。您不能对具有复杂类型或表达式的字段进行排序。

在共享的用例中,在对别名 B 执行 ORDER BY 之前,我们必须将 ToDate() 的值投影为 field_alias,然后我们可以在此字段上执行排序。