hadoop - 将数据从 SQLDB 复制到 hadoop
问题描述
我正在研究一个用例,我们要将数据从 SQL 数据库(600TB ~100 个表)移动到转换格式到 hadoop。我们没有在 SQL DB 中启用日志。我们决定将数据复制为数据集市视图并每周刷新此视图。复制的数据将每周被擦除以重写。
此 SQL DB 用于从数据湖派生的报告目的。这个 OLTP 数据库是我们正在逐步替换的旧系统。复制的数据集每周都会被删除并再次复制(刷新)。
- 80% 的数据复制是直接的,没有转换。
- 20% 进行了重新设计。
我们确定了 3 个选项:
- AirFlow + Beam 用于处理
- ETL (informatica) 被排除在外
- 带有可选 CDC Debezium 的 Kafka(连接、流式传输、沉入 hadoop)
您认为关于性能、总体交付时间、数据架构的最佳方法是什么?
解决方案
我的想法-它们的价值:
- 我绝对不会希望每周复制 600TB。鉴于这些数据中的大部分不会每周更改(我假设),那么您应该只复制已更改的数据。由于您在 Hadoop 中的数据将被分区,因此您将主要将新数据插入新分区 - 对于那些已更改的记录,您只需删除/重新加载几个分区
- 我会将所有必要的数据按原样(不进行转换)复制到 Hadoop 中的暂存区,然后在 Hadoop 平台上对其进行处理以生成您实际需要的数据 - 然后您可以根据需要删除暂存区数据
- 数据处理工具 - 如果您已经在公司内拥有特定工具集的经验,请使用它;除非现有工具中没有所需的关键功能,否则不要增加正在使用的工具集。如果这一个过程就是您将要使用此工具集的全部,那么您使用哪一个可能并不重要 - 选择一个学习/部署最快的。如果要将此工具集扩展到其他用例,那么我肯定会使用专用的 ETL/ELT 工具而不是使用编码解决方案(您为什么放弃 Informatica 作为解决方案?)
以下绝对是意见...
如果您正在构建一个新的分析平台,我很惊讶您正在使用 Hadoop。Hadoop 是一种遗留技术,已被更现代、更强大的云数据平台(Snowflake 等)取代。
此外,Hadoop 是一个糟糕的平台,可以尝试在其上运行分析(它可以作为一个数据湖来保存数据,同时您决定要使用它做什么)。尝试在其上运行与数据分区方式不一致的查询会带来非常糟糕的性能(对于非平凡的数据集大小)。例如,如果您的交易按日期进行分区,那么运行查询以汇总上周的交易价值将很快运行。但是,运行查询以汇总特定帐户(或帐户组)的交易将执行得非常糟糕
推荐阅读
- firebase - 使用 firebase 云函数与 GCP 云函数作为 firestore 触发器
- python - Python 2.7 到 3.7 tkinter scrolledtext 没有表现
- linux - Linux 基于模式打印文件名
- ios - Xcode:Pod 安装后构建失败(错误:链接器命令失败,退出代码 1)
- javascript - CSP 配置不允许正确加载资产
- javascript - NetSuite 脚本在另一个中复制行字段
- flutter - 如何在没有特定结构的情况下提取特定的 json 字段
- detox - Detox 支持 Apple TV 模拟器吗?
- d3.js - 如何在 nivo 折线图上实现该功能?
- jboss - 在 Jboss 7 上添加用户时出现异常