全体の目的
Apache Beam の簡単なプログラムを作成して,仕組みを理解していく
今回の目的
ローカルのテキストファイルを読み込んでそのまま書き出すプログラムを作成する
本編
環境
IntelliJ IDEA 2017.3.3 (Ultimate Edition)
Build #IU-173.4301.25, built on January 16, 2018
Licensed to kaito iwatsuki
Subscription is active until January 24, 2019
For educational use only.
JRE: 1.8.0_152-release-1024-b11 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.6
Maven : 3.5.2
手順
準備
- File => New => Project...
-
Maven を選択し,
Project SDK
は1.8
<Next> -
GroupId
とArtifactId
を入力し <Next> (今回はどちらもbeamSample
) -
Project name
を入力し <Finish> (今回はbeamSampleProject
) -
~/beamSample/src/main/java/SimpleBeam.java
を追加
import org.apache.beam.sdk.Pipeline;
import org.apache.beam.sdk.io.TextIO;
import org.apache.beam.sdk.options.PipelineOptions;
import org.apache.beam.sdk.options.PipelineOptionsFactory;
import org.apache.beam.sdk.values.PCollection;
public class SimpleBeam {
public static void main(String[] args){
PipelineOptions options = PipelineOptionsFactory.create();
Pipeline p = Pipeline.create(options);
// テキスト読み込み
PCollection<String> textData = p.apply(TextIO.read().from("Sample.txt"));
// テキスト書き込み
textData.apply(TextIO.write().to("wordcounts"));
// Pipeline 実行
p.run().waitUntilFinish();
}
}
依存関係が解決されていないライブラリは適宜,command
+ クリックして画像のようにAddしてください.
-
~/beamSample/Sample.txt
を追加(読み取り用テキスト)
実行
- 右上のプルダウンメニューから
Edit Configurations...
を選択
- 左上の
+
=> Maven を選択
- 任意の
Name
を選択 -
Working directory
が~/beamSample
に設定 -
Command line
にcompile exec:java -Dexec.mainClass=SimpleBeam
を入力- こちらを参考にさせていただきました
- <OK>
- 右上のプルダウンが作成したものになっているか確認し,実行ボタンをクリック
出力が以下のようになっており,~/beamSample
ディレクトリ内に``wordcounts-.*`ファイルが作成されていたら成功
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.827 s
[INFO] Finished at: 2018-02-27T02:46:10+09:00
[INFO] Final Memory: 21M/373M
[INFO] ------------------------------------------------------------------------
Process finished with exit code 0
つまりそうなところ
今回は特筆して躓きそうなところは無いけれど,IntelliJの中身の理解が浅いので,未知のエラーで焦ることは何度かあった.けれど,大半は依存関係が解決できてないのが原因だったので,Add_Maven
すればなんとかなった.
次回以降
今回は動かしただけになってしまったので,次回以降はMapReduceの考え方のおさらいも兼ねて簡単なPipelineを構成したい.