2

従業員の名前、ID、スキルセットを含む複数のファイルと、特定のスキルのリストを含む別のファイル「skills.txt」があります。skill.txt に記載されているスキルを持つ従業員を見つけるために、Java mapreduce プログラムを作成しようとしています。

たとえば、以下の 3 つの従業員ファイルがあるとします:
emp1.txt-
名前: Tom
EmpId: 001
スキル: C++、Java、SQL

emp2
.​​txt-名前: Jerry
EmpId: 002
スキル: C++、PHP、SQL

emp3.txt-
名前: Jack
EmpId: 002
スキル: Java、PHP

Skills.txt -
PHP
SQL

次に、私の結果は以下のようになります。
PHPジェリー-002; ジャック-003
SQL トム-001 ; ジェリー-002

これら 4 つのファイルはすべて HDFS にあります。私はhadoopとmapreduceに非常に慣れていません..これにはすでに多くの苦労がありましたが、それを行うための適切なロジックがありません。スキルが 1 つしかなく、mapreduce プログラムの引数として検索に必要なスキルが得られれば、プログラムを作成できます。しかし、複数のスキルを検索する必要があり、スキルが他の従業員ファイルと一緒にファイル形式で存在する場合、私にはできません。

4

2 に答える 2

0

スキル リストがこれほど短い場合は、 Configurationを介してマッパーに渡し、マッパーで読み返し、入力と一致させることができます。たった 2 つのエントリに対して別のファイルを作成するのはなぜですか? 私見、これはより便利になります。このようなもの :

あなたのドライバーで -

Configuration conf = new Configuration();
conf.set("skillList", "PHP,MYSQL");
Job job = new Job(conf);

あなたのマッパーで -

Configuration conf = context.getConfiguration();
String skillList = conf.get("skillList");
//Split skillList and do the rest

ただし、リストが非常に大きくなる場合は、Dist を使用した方がよいでしょう。キャッシュ。

于 2013-09-05T20:44:55.773 に答える