2013-10-02 60 views
0

我是新来的猪。从猪维基页面我知道有piggybank UDF和Linkedin的另一个有用的集合DataFu。我也知道从Pig 0.8开始,piggybank是Apache Pig内置udfs的一部分。猪第三方UDF澄清

但是..我认为大部分piggybank UDF都没有记录在Apache Pig中。像StringConcat一样。

我正在寻找一些格式化日期格式的UDF,它们可以将日期时间转换为像FormatDate这样的字符串。 我不确定我们有这些UDF已经在猪/猪圈中,因为我无法在文档中找到它。

此外,有没有其他第三方udfs java/python可用。请列出这些。

您的帮助真的很感谢。

+0

任何帮助? – devThoughts

+0

你能提供你的字符串/日期格式的特定用例吗?即“我有一个具有unix时代值的字段,并且想将其转换为'YYYY-MM-DD'格式”。 –

+0

我的主要问题是了解像DataFu这样的流行的UDF集合,并且看起来像piggybank中的大多数udfs,它们现在是Apache Pig API的一部分,但未在Apache网站中记录。如何访问这些UDF的文档。示例StringConcat,COUNT_STAR等我可能会在这里丢失一些东西。只是想确认并知道是否有任何方法可以访问所有可用的UDfs。最后,我要寻找CHARARRAY领域这是一个日期表示(说YYYY-MM-DD HH:MM:SS)转换成DateTime类型或提取年,日,月,小时等 – devThoughts

回答

2

所以这里有几个问题。我会尽力掩盖他们。

的PiggyBank文档

有(可惜)是手动没有用户的扑满UDF的解释如何使用他们每个人从pigscript内。然而,猪的Javadoc包括用于实现在储蓄罐的UDF的每个Java CASS信息(向下滚动到 “的contrib:扑满”):

字符串为DateTime

(假设猪< 0.11)

要转换包含时间信息的字符串,您需要使用CustomFormatToISO UDF。这需要你的chararray包含数据信息和日期时间格式规范,并将其转换为ISO日期时间格式。一旦以这种格式,也有对ISO格式的时间运行多个扑满功能:

还要注意的是ISO格式的字符串比较导致日期排序。这意味着您可以对它们应用比较和排序操作,并且它们的行为就像具备时间意识一样。欲了解更多的背景看这个苏答案:https://stackoverflow.com/a/9576911/9940

如果您使用0.11,再加上你可以使用内置的TODATE()函数:http://pig.apache.org/docs/r0.11.1/func.html#to-date

+0

优秀!非常感谢 – devThoughts