简介

在文章《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

最新文章

  1. BZOJ4455: [Zjoi2016]小星星
  2. 《利用python进行数据分析》读书笔记--第五章 pandas入门
  3. EpicEditor – 可嵌入的 JavaScript Markdown 编辑器
  4. bzoj4419[SHOI2013]发微博
  5. CommonUtils
  6. The Storage Situation: Removable Storage
  7. [安卓开发]App Widget开发入门指导
  8. C#基础(六)——值类型与引用类型
  9. 类和对象:面向对象编程 - 零基础入门学习Python037
  10. js 判断js函数、变量是否存在 JS保存和删除cookie操作,判断cookie是否存在的方法
  11. solr6环境搭建
  12. Python各类图像库的图片读写方式总结
  13. 下载Dynamics 365 Customer Engagement 工具
  14. 如何将本地的文件上传到你的github仓库中(首次流程)
  15. Golang中的自动伸缩和自防御设计
  16. Ubuntu 16.04下安装网络流量分析工具 Wireshark
  17. springmvc ajax传递json值时出现400错误 (问题出在sql上)
  18. Train-Alypay-Cloud
  19. vlc源码分析(三) 调用live555接收RTSP数据
  20. css声明的优先级

热门文章

  1. 学习ASP.NET Core Blazor编程系列九——服务器端校验
  2. Oracle性能优化之运行参数设置
  3. ios手机键盘拉起之后页面不会回退的问题
  4. Vue2 到 Vue3,重温这 5 个常用的 API
  5. Go语言核心36讲17
  6. [排序算法] 树形选择排序 (C++)
  7. vue 3.0 常用api 的简介
  8. 关于 .NET 在不同操作系统中 IO 文件路径拼接方法结升级 .NET 7 后注意到的一个小坑
  9. 小米mini路由器刷breed不死鸟和潘多拉固件
  10. jquery 操作样式