Apache pig 在Pig中为元组中的所有字段应用TRIM()

Apache pig 在Pig中为元组中的所有字段应用TRIM(),apache-pig,Apache Pig,我正在加载一个包含56个字段的CSV文件。我想在Pig中为元组中的所有字段应用TRIM()函数 我试过: B = FOREACH A GENERATE TRIM(*); 但它失败了,错误如下- 错误org.apache.pig.tools.grunt.grunt-错误1045:无法推断匹配 org.apache.pig.builtin.TRIM的函数可以是多个或没有 适合请使用显式强制转换 请帮忙。谢谢。要修剪Pig中的元组,您应该创建一个UDF。注册UDF并使用Foreach语句将UDF应用

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

我试过:

B = FOREACH A GENERATE TRIM(*);
但它失败了,错误如下-

错误org.apache.pig.tools.grunt.grunt-错误1045:无法推断匹配 org.apache.pig.builtin.TRIM的函数可以是多个或没有 适合请使用显式强制转换


请帮忙。谢谢。

要修剪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);
        }
    }
}
公共类StrTrim扩展了EvalFunc{
公共字符串exec(元组输入)引发IOException{
if(input==null | | input.size()==0)
返回null;
试一试{
String str=(String)input.get(0);
返回str.trim();
}
捕获(例外e){
抛出WrappedIOException.wrap(“捕获异常处理输入行”,e);
}
}
}

您不能那样使用修剪功能。你能粘贴一些输入样本吗?