mapreduce - 如何使数据流 apache Beam 工作更快
问题描述
我有一个 apache Beam 作业,大约需要 6 个小时以上才能完成。我们摄取大约 2.7Tb 的 GCS 数据以及 Bigtable/Bq/等其他数据源,然后执行 CoGroupbyKey.create()。
GCS 数据采用原始字符串的形式,userId, hashedPhoneNumber
例如:
525135a7-cb59-46ec-8d1d-0f12df02f486, 3070816492067005070
从 GCS 摄取数据并使用 GroupbyKey 创建 KV 时,我有多个 DoFns
uuid -> Set<hashedphoneNumber>
我的问题更多是关于如何使管道更快?
- 现在我把它们都读作字符串数据类型。将它们读取为 UUID 和 Long 有帮助吗?当我尝试进行测试时,我无法获得 UUID 编码器。
- 制作 Set<> 是否需要额外费用?一般来说,应该记住任何序列化/反序列化吗?我可以只连接所有 hashedPhoneNumber 并将其传递下来,而不是制作一个 Set 吗?作为开发人员,使用 Set<> 可以帮助我理解管道 i/p、o/p。
- 任何其他使管道更快的方法或关于如何使用这些类型的一般建议?
解决方案
推荐阅读
- git - Git 标记条件不适用于 Github 操作
- python - 使用 requests 模块从 aspx 站点下载 zip 文件
- javascript - 多次重复 Puppeteer 代码(一个进程)
- maven - 如何构建 Netbeans maven WAR 项目,然后在非标准目录中构建时运行
- java - 仅在 AIX 7.1 上为 IBM SDK 8 和 Tomcat 7.0.108 启用 TLS 1.3
- docusignapi - 旧版离线签名所需的 Docusign 管理员权限
- reactjs - next.js + GraphQL:“不变违规:在上下文中找不到“客户端”或作为选项传入......”
- python - 在许多测试用例中给出 TLE 和错误的问题
- javascript - 在 docker 中运行时找不到节点导入模块
- bash - 如何使用“a = 1”形式的字符串参数从 Cygwin bash 运行 Windows 批处理脚本?