簡介 在文章《Apache Beam入門及Java SDK開發初體驗》中大概講了Apapche Beam的簡單概念和本地運行,本文將講解如何把代碼運行在GCP Cloud Dataflow上。 本地運行 通過maven命令來創建項目: mvn archetype:generate \ -Darche ...
簡介
在文章《Apache Beam入門及Java SDK開發初體驗》中大概講了Apapche Beam的簡單概念和本地運行,本文將講解如何把代碼運行在GCP Cloud Dataflow上。
本地運行
通過maven命令來創建項目:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.beam \
-DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
-DarchetypeVersion=2.37.0 \
-DgroupId=org.example \
-DartifactId=word-count-beam \
-Dversion="0.1" \
-Dpackage=org.apache.beam.examples \
-DinteractiveMode=false
上面會創建一個目錄word-count-beam
,裡面是一個例子項目。做一些簡單修改就可以使用了。
先build一次,保證依賴下載成功:
$ mvn clean package
通過IDEA本地運行一下,添加入參如下:
--output=pkslow-beam-counts --inputFile=/Users/larry/IdeaProjects/pkslow-samples/README.md
處理的文件是README.md,輸出結果首碼為pkslow-beam-counts
:
或者通過命令行來運行也可以:
mvn compile exec:java \
-Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--output=pkslow-beam-counts --inputFile=/Users/larry/IdeaProjects/pkslow-samples/README.md"
在GCP Cloud Dataflow上運行
準備環境
要有對應的Service Account和key,當然還要有許可權;
要打開對應的Service;
創建好對應的Bucket,上傳要處理的文件。
運行
然後在本地執行命令如下:
$ mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--runner=DataflowRunner --gcpTempLocation=gs://pkslow-dataflow/temp \
--project=pkslow --region=us-east1 \
--inputFile=gs://pkslow-dataflow/input/README.md --output=gs://pkslow-dataflow//pkslow-counts" \
-Pdataflow-runner
日誌比較長,它大概做的事情就是把相關Jar包上傳到temp目錄下,因為執行的時候要引用。如:
Nov 03, 2022 8:41:48 PM org.apache.beam.runners.dataflow.util.PackageUtil tryStagePackage
INFO: Uploading /Users/larry/.m2/repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar to gs://pkslow-dataflow/temp/staging/commons-compress-1.8.1-X8oTZQP4bsxsth-9F7E31Z5WtFx6VJTmuP08q9Rpf70.jar
Nov 03, 2022 8:41:48 PM org.apache.beam.runners.dataflow.util.PackageUtil tryStagePackage
INFO: Uploading /Users/larry/.m2/repository/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13.jar to gs://pkslow-dataflow/temp/staging/jackson-mapper-asl-1.9.13-dOegenby7breKTEqWi68z6AZEovAIezjhW12GX6b4MI.jar
查看Bucket,確實有一堆jar包:
接著會創建dataflow jobs開始工作了。可以查看界面的Jobs如下:
點進去可以看到流程和更多細節:
最後到Bucket查看結果也出來了:
代碼
代碼請看GitHub: https://github.com/LarryDpk/pkslow-samples