在pig中为元组中的所有字段应用trim()

9rbhqvlz  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(268)

我正在加载一个包含56个字段的csv文件。我想在pig中为元组中的所有字段应用trim()函数。
我试过:

B = FOREACH A GENERATE TRIM(*);

但它失败了,错误如下-
error org.apache.pig.tools.grunt.grunt-错误1045:无法将org.apache.pig.builtin.trim的匹配函数推断为多个或没有匹配的函数。请使用显式转换。
请帮忙。谢谢您。

w7t8yxp5

w7t8yxp51#

要修剪pig中的元组,应该创建一个udf。注册自定义项并使用 Foreach 语句添加到要修剪的元组的字段。下面是用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);
        }
    }
}

相关问题