让Apache Beam在GCP Cloud Dataflow上跑起来

news2024/10/7 19:28:08

简介

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Swift 新 async/await 同步机制小技巧:消除“多余”的 await 关键字

概览 在使用多个Actor 共同实现同步功能的时候,我们往往会看到如下使用场景: Actor A 必须在主线程上运行,Actor B可以在任意线程上运行,但需要适时的调用 Actor A 中的方法。 在这种情况下,我们会遇到如下代码&#…

从移动激光扫描数据中自动提取单棵树的双重生长方法

论文题目:A dual growing method for the automatic extraction of individual trees from mobile laser scanning data Abstract 在城市场景的杂乱点云中,街道树木与其他物体交织在一起,阻碍了对单个树木的自动提取。根据树木的一般构成&a…

React:安装配置使用scss

目录 前言: 1.暴露隐藏的webpack配置; 2.安装sass的相关包; 3.项目中新建一些scss文件; 4.在config文件夹中找到webpack.config.js文件,进行配置; 5.测试使用; 前言: 项目采用…

Python之Pandas的常用技能【写入数据】

1、背景: 最近在工作中遇到越来越多的的使用pandas或者python来处里写入操作,尤其是对excel文件或者csv文件的操作更是常见,这里将写入操作总结如下,方便记忆,也分享给大家,希望对阅读者能够有所帮助 2、…

nvdiffrec:Extracting Triangular 3D Models, Materials, and Lighting From Images

论文主页 https://nvlabs.github.io/nvdiffrec/git主页 https://github.com/NVlabs/nvdiffrec新闻报道 https://redian.news/wxnews/36324YuQiao0303 读后感 https://blog.csdn.net/qq_34342853/article/details/125622816b站演示效果视频 https://www.bilibili.com/video/BV1P…

8天获offer|祝贺信息技术老师获CSC资助赴意大利访学

I老师拟申报CSC青年骨干教师项目,指定欧洲学校,且要求半个月内获得邀请函。我们8天就取得了意大利帕多瓦大学的offer,研究方向完全相符,因而顺利通过了CSC审批。后经繁琐的手续,I老师最终获得签证,如期出国…

ABB机器人设置有效载荷的2种方法具体步骤(直接输入法+自动识别推算法2)

ABB机器人设置有效载荷的2种方法具体步骤(直接输入法+自动识别推算法2) 为什么要设置有效载荷Loaddata? 对于搬运应用的机器人只有设定正确的工具和载荷数据,机器人才能正确的工作; 对于搬运比较重的产品,或工具的重量也比较重,需要设置工具及搬运对象的重心和重量; …

2023年黑马Java入门到精通教程--程序流程控制

程序流程控制 程序执行的几种常见形式 分支结构 If分支 根据判定的结果(真或假)决定执行某个分支的代码 If分支的作用 If分支有三种格式 switch分支 也是匹配条件去执行分支, 适合做值匹配的分支选择,结构清晰,格式良好 swit…

通信原理笔记—基带信号的检测与最佳接收

目录 在加性白高斯噪声信道条件下数字基带信号的接收: 加性高斯白噪声干扰下的信号检测: 最大似然判决准则:误码率最小意义上的最佳判决: 先验等概及最佳判决时的误码率计算: 高斯噪声干扰下二进制信号的检测&…

Mock.js(简单代替后台)

Mock.js (官网http://mockjs.com/)是一款模拟数据生成器,旨在帮助前端开发人员独立于后端进行开发,帮助编写单元测试。二、为什么使用mockjs在做开发时,当后端的接口还未完成,前端为了不影响工作效率&#…

【实际开发12】- Utils / tools

目录 1. 自定义工具类 概念 / 解析 1. 构建方式 1. XxxClassl 类 public xxx() → new XxxClass() 2. XxxClassl 类 public static xxx() → XxxClass.xxx() 2. Interface 1. public interface XxxMapper → private final XxxMapper 2. public interface IXxxService →…

面经八,笔试加面试

Java 开发面试题,尧壁信科有限公司 笔试: 1、Java 中有几种类型的流? 字节流字符流,输入流输出流 2、什么是 java反射? 在程序的运行状态中,对于任意一个类,都可以知道整这个类的所有属性和方法&#xf…

如何锁定Excel表格的公式不被修改

很多小伙伴在制作Excel表格的时候,往往还会设置很多公式,但如果不小心或被他人随意修改了公式,就会造成数据错误,为了避免这种情况,其实我们可以设置保护,让公式锁定无法被修改。 下面举一个例子来看看如何…

【C语言 数据结构】串

文章目录串类型的定义串的表示和实现定长顺序存储堆分配存储表示串的块链存储表示串的模式匹配算法字串的定位函数匹配模式的改进算法串类型的定义 对于由多个字符(≥ 0)组成的字符串(例如 http://data.biancheng.net)&#xff0…

Git版本如何使用命令进行升级(win10)

1、桌面鼠标右键,点击Git Bash Here,输入git --version 查看目前Git版本。 2、输入git update-git-for-windows 升级版本,再输入y同意升级并覆盖之前的版本。 我在版本升级的过程中遇到了error: RPC failed; curl 92 HTTP/2 stream 0 was not…

SaaS-API越权漏洞检测系统

概述通过替换认证信息后重放请求,并对比数据包结果,判断接口是否存在越权漏洞特点支持HTTPS自动过滤图片/js/css/html页面等静态内容多线程检测,避免阻塞支持输出报表与完整的URL、请求、响应安装和使用安装依赖git clone https://github.co…

Eyeshot 2023 测试版,离发行版不远了

Eyeshot 2023 测试版 这个 Beta 版本来得太晚了,因为我们决定放弃许多客户不喜欢的 v2022 GEntities。该产品已根据以下架构进行了完全重构。例如,使用 Eyeshot 2023 可以非常轻松地在 Web 项目中使用没有 UI 的产品。这也简化了从 Eyeshot 2021 版的项…

【软件测试】6年资深测试总结的,测试人常常犯的9大误区,背锅不存在的......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、把原型设计、UI效…

Chapter3:机器人系统设计

ROS1{\rm ROS1}ROS1的基础及应用,基于古月的课,各位可以去看,基于hawkbot{\rm hawkbot}hawkbot机器人进行实际操作。 ROS{\rm ROS}ROS版本:ROS1{\rm ROS1}ROS1的Melodic{\rm Melodic}Melodic;实际机器人:Ha…

无忧·企业文档自助配置完成单点登录配置,对接企业原有组织架构

我作为企业文档的产品负责人,常常被问及企业文档和其他在线文档有啥差不一样的地方?我大致总结了下,有几个方面:1、企业文档定位于企业内部的内容管理工具,侧重于私有化部署。核心的是数据的控制权在企业自己手中&…