Mahoutは最新コードを利用したい場合、チェックアウトして、ビルドして、bin/mahoutを実行して、何かを実行することになります。いろいろとやっていくと自分のコードも実行したくなると思いますが、まぁ、単純にexamplesのsrc/main/javaに自分のパッケージを切って、追加する方法もあるかと思います。でも、やっぱり自分のjarを別プロジェクトにして置きたいな~、というときの方法です。Mahout的に推奨のやり方がどこかにあるのか、わからないけど…。ひとまず、私はこんな感じでやっていますということで。(もっと良いやり方があれば、それに切り替えると思うけど)
まず、自分のプロジェクトを作ります。Mavenが前提で話を進めます。
mvn archetype:generate
maven-archetype-quickstartを選んで、適当なプロジェクト名をつけます。今回はhogegroupのhogeprojectにでもしておきます。プロジェクトができたら、pom.xmlを編集しておきます。
: <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-core</artifactId> <version>0.5-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-math</artifactId> <version>0.5-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.mahout</groupId> <artifactId>mahout-utils</artifactId> <version>0.5-SNAPSHOT</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> </dependencies> :
という感じで良いでしょう。あとは、適当にhogeprojectでsrc/main/java以下に自分のMapReduce的なコードを書きます。できたら、mvn installでビルドしておきます。
次に、チェックアウトしてMahoutのコードに戻ります。2つほどファイルを変更します。まず、examples/pom.xmlを追加します。
: <dependency> <groupId>hogegroup</groupId> <artifactId>hogeproject</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> :
次に、examples/src/main/assembly/job.xmlを編集します。
: <excludes> <exclude>org.apache.hadoop:hadoop-core</exclude> <exclude>org.apache.mahout:mahout-core</exclude> <exclude>org.apache.mahout:mahout-utils</exclude> <exclude>org.apache.mahout:mahout-examples</exclude> <exclude>hogegroup:hogeproject</exclude> </excludes> </dependencySet> <dependencySet> <unpack>true</unpack> <scope>runtime</scope> <outputDirectory>/</outputDirectory> <includes> <include>org.apache.mahout:mahout-core</include> <include>org.apache.mahout:mahout-utils</include> <include>org.apache.mahout:mahout-examples</include> <include>hogegroup:hogeproject</include> </includes> :
というようにexcludeとincludeに追加します。できたら、Mahoutをビルドします。
mvn clean mvn install
を実行してください。これにより、examples/target/mahout-examples-*-job.jarにhogeprojectが展開されて組み込まれます。あとは、普通にMahoutの実行と同じで
bin/mahout hogegroup.HogeDriver
みたいな感じで実行できます。
Mahoutは一度ビルドしておけば良いので、2回目からはhogeprojectでmvn installして、Mahoutのexamplesディレクトリでmvn clean;mvn packageをすれば、jarが更新されます。そんな感じで遊んでみてください。