Asakusa Framework0.5.0(Maven時代)のDirect I/Oのメモ。
|
|
Direct I/OはHDFS(あるいはMapR FSやAmazon S3)のファイルにアクセスするアーキタイプ。
Windows7にAsakusaFW 0.5.0の開発環境を構築してみる。
ただしコンパイルが出来るところまで。テスト実行は(Hadoopが必要になるので)しない。
(→AsakusaFW 0.5.1・Windows7でテストを実行する方法)
AsakusaFW 0.5.0では、Asakusa Frameworkのインストール(ASAKUSA_HOMEの下に必要なライブラリー一式を入れる)は0.4以前と方法が違う。
環境変数名 | 値の例 | 備考 |
---|---|---|
ASAKUSA_HOME |
D:/cygwin/home/hishidama/asakusa |
「D:/cygwin/home/hishidama 」は、Cygwin上のホームディレクトリー($HOME) |
$ cd 展開する場所 $ tar xf ダウンロードした場所/asakusafw-organizer-0.5.0.tar.gz
$ ls …asakusafw-organizerというディレクトリーが作られていることの確認 asakusafw-organizer
$ cd asakusafw-organizer $ mvn package antrun:run
$ ls $ASAKUSA_HOME …インストールされた内容の確認 batchapps core ext scripts testing VERSION windgate-ssh yaess-hadoop bulkloader directio log temp tools windgate yaess $ cat $ASAKUSA_HOME/VERSION # Asakusa Framework Build Information asakusafw.version=0.5.0 asakusafw.build.timestamp=20130509-1849 asakusafw.build.java.version=1.6.0_33 asakusafw.git.commit=457ad18ca4ef4f63a29b93adfcc7f4ba991bba30 asakusafw.git.branch=0.5-release
$ cd ワークスペースのディレクトリー $ mvn archetype:generate -DarchetypeCatalog=http://asakusafw.s3.amazonaws.com/maven/archetype-catalog-0.5.xml
Choose archetype: |
3 |
Direct I/Oを選択。 |
Choose version: |
2 |
AsakusaFW 0.5.0を使用。 |
Define value for property 'groupId': : |
com.example |
プロジェクトのグループ名。 |
Define value for property 'artifactId': : |
afw-dio05 |
プロジェクトのディレクトリー名。 |
Define value for property 'version':
1.0-SNAPSHOT: : |
1.0 |
今回作る自分のプロジェクトのバージョン。 どんな値でもいいが、ファイル名の一部に使われる。 |
Define value for property 'package':
com.example:
: |
com.example |
パッケージ名。 デフォルトはグループ名と同一。 |
$ mkdir -p $ASAKUSA_HOME/dmdl/plugin $ touch $ASAKUSA_HOME/dmdl/plugin/dummy.jar
$ cd afw-dio05/ $ mvn eclipse:eclipse
Asakusa FrameworkはWindowsには正式対応していないのでバグとは言えないかもしれないが、
Windows上でAsakusaFW 0.5.0のデータモデルを生成しようとするとエラーが発生する。
$ mvn generate-sources 〜 [java] usage: java -classpath ... com.asakusafw.dmdl.java.Main -output -package[-plugin ] -source [-sourceencoding ] [-targetencoding ] [java] -output output directory location [java] -package package name of output Java files [java] -plugin DMDL processor plug-ins [java] -source source file or source directory paths [java] -sourceencoding input DMDL charset encoding [java] -targetencoding output Java charset encoding [java] org.apache.commons.cli.MissingArgumentException: Missing argument for option: plugin [java] at org.apache.commons.cli.Parser.processArgs(Parser.java:343) [java] at org.apache.commons.cli.Parser.processOption(Parser.java:393) [java] at org.apache.commons.cli.Parser.parse(Parser.java:199) [java] at org.apache.commons.cli.Parser.parse(Parser.java:85) [java] at com.asakusafw.dmdl.java.Main.configure(Main.java:128) [java] at com.asakusafw.dmdl.java.Main.main(Main.java:101) [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 35.969s [INFO] Finished at: Fri May 10 21:02:41 JST 2013 [INFO] Final Memory: 7M/17M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (asakusa-generate-sources) on project afw-dio05: An Ant BuildException has occured: The following error occurred while executing this line: [ERROR] D:\cygwin\home\hishidama\asakusa\scripts\asakusa-build.xml:59: Java returned: 1 [ERROR] around Ant part ...<ant antfile="D:/cygwin/home/hishidama/asakusa/scripts/asakusa-build.xml">... @ 6:77 in D:\data\workspace\ws_hadoop1\afw-dio05\target\antrun\build-main.xml
「-plugin」という必須オプションに値が指定されていないということらしい。
asakusa-build.xmlの59行目付近を見てみると
<java classname="com.asakusafw.dmdl.java.Main" classpath="${compile_classpath}" fork="true" failonerror="true"> 〜 <arg value="-plugin" /> <arg pathref="dmdl-ext-plugins" /> </java>
となっており、「-plugin」のパス参照先のdmdl-ext-pluginsは以下の様になっている。
<path id="dmdl-ext-plugins"> <fileset dir="${env.ASAKUSA_HOME}/dmdl/plugin" includes="*.jar" erroronmissingdir="false" /> </path>
AsakusaFW 0.5.0から、DMDLコンパイルの際にASAKUSA_HOME/dmdl/plugin/の下にあるjarファイルをクラスパスに含めるようになったらしい。(ユーザー独自のjarファイルを入れやすくする為)
が、Windows版ではこの場所に何らかのファイルが無いとエラーになる、という事のようだ。
したがって、適当なファイルを(0バイトでよいので)作ってやると、DMDL生成が正常に終了するようになる。
$ mkdir -p $ASAKUSA_HOME/dmdl/plugin $ touch $ASAKUSA_HOME/dmdl/plugin/dummy.jar