0

需要从oracle数据库中提取数据并存储在谷歌云平台中。数据约为 10 TB。可以通过 Spark 实现吗?数据必须每月传输一次。在 GCP 中存储和处理的数据如下:

Oracle 数据库到云存储(不必进行 CSV 导出),然后它将在 Dataprep 中进行清理和准备,这将通过 Dataflow 进行进一步处理,然后最后将存储在 Big Query 下(来自大查询数据科学家将使用数据他们的模型创建)。

在此期间不得使用第三方工具。允许使用任何开源工具。

我正在考虑从 spark 中提取数据(尽管使用 DataProc 进行 spark 作业)并将其存储在 GCP(任何一个云存储或大表或大查询)中。通过云 sql - 这是不可能的,因为它不支持 oracle 数据库。

如果我的上述逻辑错误,任何新架构也可以。请建议。谢谢你。

4

3 回答 3

0

希望我的回复不会太晚,但无论如何我都会发布它......

您可能可以减少您提到的一些步骤,但这完全取决于您的数据转换的细节。列出的可能性太多了,但我认为您正在寻找一组可供选择的选项。如果您仍在调查选项,请参阅下文。

  • 我发现这篇文章展示了如何从 Oracle OLTP 迁移到 Spanner 或从 OLAP 迁移到 BigQuery。有一个完整的工作流程,太长了,无法在此列出。
  • 此外,本文还在页面顶部显示了常规传输选项,例如“在线传输”、“传输服务”、“传输设备”和“Bigquery 数据传输服务”。该页面的其余部分提供了有关如何根据数据量和吞吐量选择正确服务的信息。

如果还为时不晚,我希望以上内容能为您指明正确的方向。

于 2020-01-10T17:01:54.903 回答
0

以下链接显示您可以使用 Cloud Dataflow 直接从 Oracle 数据库读取到 BigQuery。如果您想执行任何 ETL,您可能需要在其间添加更多步骤。

https://github.com/rrakesh2690/dataengineering

于 2020-01-20T18:09:46.903 回答
0

你的架构听起来不错。只是一些建议:

  • 如果您从 Spark 作业中查询数据库,并同时执行转换,则会增加网络中断的风险和恢复处理的困难(见下文)
  • 模式:云存储 -> 数据流 -> BigQuery 非常适合批处理,就像您一样每月一次。
  • Cloud SQL 无法满足您的需求(无 Oracle 支持且数据库限制为 10TB)
  • BigQuery 不匹配 oracle 功能(如 Cloud SQL 引擎(MySQL 和 PostGre),函数、存储过程、查询等的方言不同),但它是 PB 级数据库。专为分析而设计(例如,不要期望网站使用的响应时间以毫秒为单位,查询至少需要 1 秒)-> Datastudio 数据可视化例外,您可以在其中插入 BI 引擎,这是一种内存缓存,可让您加快您的Datastudio 的 BigQuery 查询
  • BigTable 是为具有高吞吐量要求的时间序列设计的;不是您的情况,您处于批处理模式。

关于数据传输,从我的角度来看,恢复文件传输比数据库事务更容易。

我的意思是,如果您使用 spark 查询您的 Oracle 数据库并执行您想要的提取/转换,并且如果发生连接故障,您的整个过程可能会失败并重新启动。或者您必须实施大量智能工程来应对此类问题。

另一方面,如果你有文件,你的 Oracle 数据库的提取在本地执行,很容易gsutil恢复这些传输。此外,您在本地查询数据库,它比通过网络查询更有效。为了提高 10TB 文件的文件传输性能,您可以查看此视频以获取大文件;如果是您的情况,该系列中还有其他用于小文件的视频。

于 2019-11-17T12:39:12.597 回答