大數據處理神器Beam

ApacheBeam是統一批處理(Batch)模式和數據流(Stream)處理模式的標準. 在大數據各種框架中,比如進行批處理的MapReduce,實時流處理的Flink,以及SQL交互的Spark SQL等等,把這些開源框架,工具,類庫,平臺整合到一起,所需要的工作量以及複雜度,可想而知。這也是大數據開發者比較頭疼的問題。而整合這些資源的一個解決方案,就是 Apache Beam。
在這裏插入圖片描述
java快速啓動:https://beam.apache.org/get-started/quickstart-java/
將WordCount的Beam程序以多種不同Runner運行
Get the WordCount Code:
在終端中輸入以下命令

       mvn archetype:generate \
      -DarchetypeGroupId=org.apache.beam \
      -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
      -DarchetypeVersion=2.7.0 \
      -DgroupId=org.example \
      -DartifactId=word-count-beam \
      -Dversion="0.1" \
      -Dpackage=org.apache.beam.examples \
      -DinteractiveMode=false

將會下載一段時間,自動會創建一個word-count-beam的文件夾,裏面包含pom.xml文件
在這裏插入圖片描述
可見創建成功
輸入tree查看文件夾樹結構
在這裏插入圖片描述
A single Beam pipeline can run on multiple Beam runners, including the ApexRunner, FlinkRunner, SparkRunner or DataflowRunner.
在這裏插入圖片描述
運行WordCount:
1.DirectRunner

mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--inputFile=/home/zq/Desktop/test.txt --output=counts" -Pdirect-runner

講真,第一次的時候下載這麼多jar包,速度是真的慢.
後面從本地加載,就會快很多.
2.SparkRunner

mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--runner=SparkRunner --inputFile=/home/zq/Desktop/test.txt 
--output=counts" -Pspark-runner

3.FlinkRunner

mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--runner=FlinkRunner --inputFile=/home/zq/Desktop/test.txt 
--output=counts" -Pflink-runner

以Flink爲例,其他平臺運行方式只是比直接運行多了指定–runner=FlinkRunner和-Pflink-runner
運行時如果你發現spark等的版本不是最新的,可以自己去pom.xml文件中做相應修改,再加載一次就行了
在這裏插入圖片描述
查看結果:
ls counts*
在這裏插入圖片描述
在這裏插入圖片描述
這樣,同一份代碼(WordCount.java)實現了在不同平臺引擎Runner(Flink,Spark等等)上面的運行,並且效果是一樣的.類似JVM對於java跨平臺性的支持

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章