如何在猪文件中使用.jar

时间:2012-12-09 16:08:43

标签: java hadoop mapreduce apache-pig mapr

我有两个输入文件smt.txt和smo.txt。 jar文件读取文本文件并根据java文件中描述的某些规则拆分数据。并且pig文件将这些数据放入输出文件中并执行mapreduce。

register 'maprfs:///user/username/fl.jar';
DEFINE FixedLoader fl();

mt = load 'maprfs:///user/username/smt.txt' using FixedLoader('-30','30-33',...........) AS (.........);

mo = load 'maprfs:///user/username/smo.txt*' using FixedLoader('-30','30-33',.....) AS (......);

store mt into 'maprfs:///user/username/mt_out' using JsonStorage();
store mo into 'maprfs:///user/username/mo_out' using JsonStorage();

和java代码的一部分,如下所示。 (我相信方法的内容不是必要的):

package com.mapr.util;

import org.apache.hadoop.mapreduce.lib.input.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.io.*;
import org.apache.pig.*;
import org.apache.pig.data.*;
import org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.*;
import java.util.*;
import java.io.*;

public class FixedLoader extends LoadFunc
{

............

}

当我使用命令“pig -x mapreduce sample.pig”在一个终端中运行这个猪程序时,我给出了一条错误消息:

  

错误org.apache.pig.tools.grunt.Grunt - 错误1070:无法使用导入解析com.mapr.util.FixedLoader:[,org.apache.pig.builtin。,org.apache.pig.impl .builtin。]

如何将这些导入到我的项目中,或者有任何建议/解决方案来运行此程序?

1 个答案:

答案 0 :(得分:1)

您需要使用其完整的包名称定义FixedLoader

register 'maprfs:///user/username/fl.jar';
DEFINE FixedLoader com.mapr.util.FixedLoader();
...

还注册自定义UDF中使用的所有第三方依赖关系jar。