在Pig中为TRuple中的所有字段应用TRIM()

时间:2015-04-02 13:02:51

标签: apache-pig

我正在加载包含56个字段的CSV文件。我想在Pig中为元组中的所有字段应用TRIM()函数。

我试过了:

B = FOREACH A GENERATE TRIM(*);

但它失败并出现以下错误 -

  

错误org.apache.pig.tools.grunt.Grunt - ERROR 1045:无法推断匹配   org.apache.pig.builtin.TRIM的函数可以是多个,也可以不是   适合。请使用明确的演员。

请帮忙。谢谢。

1 个答案:

答案 0 :(得分:0)

要修剪Pig中的元组,您应该创建一个UDF。注册UDF并将带有Foreach语句的UDF应用于要修剪的元组的字段。下面是使用UDF修剪元组的代码。

public class StrTrim extends EvalFunc<String> {
    public String exec(Tuple input) throws IOException {
        if (input == null || input.size() == 0)
            return null;
        try {
            String str = (String)input.get(0);
            return str.trim();
        }
        catch(Exception e) {
            throw WrappedIOException.wrap("Caught exception processing input row ", e);
        }
    }
}