假设我在 Pig 中有以下输入:
some
我想把它转换成:
s
so
som
some
我(还)没有找到一种方法来迭代 Pig latin 中的 chararray。我找到了 TOKENIZE 函数,但它在单词边界上 split 。 那么“拉丁 pig ”可以做到这一点还是需要 Java 类才能做到这一点?
最佳答案
尼尔斯, TOKENIZE 采用定界符参数,因此您可以将其拆分为每个字母;但是我想不出一种方法让它产生重叠 token 。
不过,在 Pig 中编写 UDF 非常简单。您只需实现一个名为 EvalFunc 的简单接口(interface)(此处有详细信息:http://wiki.apache.org/pig/UDFManual)。 Pig 是围绕用户编写自己的函数来处理大多数任何事情的想法而构建的,因此编写自己的 UDF 是一件常见且自然的事情。
一个更简单的选择是使用 Pig 流式处理通过脚本传递数据(我发现编写一个快速的 Perl 或 Python 脚本比为一次性作业实现 Java 类要快),尽管效率不高。这里有一个例子:http://www.cloudera.com/blog/2009/06/17/analyzing-apache-logs-with-pig/ -- 它演示了预先存在的库、Perl 脚本、UDF,甚至是动态 awk 脚本的使用。
关于hadoop - 在 PIG (Hadoop) 中将输入拆分为子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400160/