2

2 つの入力ファイル 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. ]

これらをプロジェクトにインポートするにはどうすればよいですか、またはこのプログラムを実行するための提案/解決策はありますか?

4

1 に答える 1

1

FixedLoader完全なパッケージ名で定義する必要があります。

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

また、カスタム UDF で使用されるすべてのサード パーティの依存関係 jar を登録します。

于 2012-12-09T19:26:26.740 に答える