我有一个 pig 脚本,它从文件中读取输入并发送到我们的自定义 UDF,该 UDF 发送回带有 2 个键/值对的 Map。之后,我们必须将每个键值对保存在 2 个不同的位置。我们正在使用 Store 进行操作。我们面临的问题是我们在猪脚本中使用的每个 STORE 命令都在调用我们的自定义 UDF。
>REGISTER MyUDF.jar;
>LOADFILE = LOAD '$file' AS record:chararray;
>MAPREC = FOREACH LOADFILE GENERATE MyUDF(record);
>ERRLIST = FOREACH MAPREC {
>GENERATE $0#'errorRecord' AS ErrorRecord;
>};
>ERRLIST = FILTER ERRLIST BY ErrorRecord is not null;
>MLIST = FOREACH MAPREC {
>GENERATE $0#'mInfo' AS MRecord;
>};
>MLIST = FILTER MLIST BY MRecord is not null;
>STORE MLIST INTO 'fileOut';
>STORE ERRLIST INTO 'errorDir';
有没有一种方法在猪脚本中只调用一次 UDF,即使我们有多个 STORE....