写点什么

从 RDBMS 到 Snowflake 的复制 | 技术实践

  • 2025-09-17
    北京
  • 本文字数:870 字

    阅读完需:约 3 分钟

大小:428.77K时长:02:26
从 RDBMS 到 Snowflake 的复制 | 技术实践

问题陈述:


在仅有 8GB 内存的一台 Databricks Worker 上,将一张超过 1 亿条记录的 Oracle 表迁移到 Snowflake,需要一种高度优化、具备内存感知的方案,以避免失败并确保在严格的 2 小时时限内稳定执行。传统方法存在发生内存不足错误和资源利用低效的风险,因此需要一种策略,在无需额外增加集群资源的前提下,优先实现受控的数据流式处理、尽可能小的内存占用以及高效的写入操作。(使用 Databricks、PyArrow 和 Native Spark)

❌ 常见错误:


  • 使用单线程的 Pandas to_sql() = 必然触及内存上限并失败。

  • 未调优的直接 JDBC 读取 = 缓慢且不稳定。

✅ 优化策略:

1.来源:Oracle 并行读取


  • 调优 JDBC 的 fetchsize 与 defaultRowPrefetch.

  • 计算并限制分区数以获得最佳并行度。

  • 使用谓词下推以高效进行数据切分。

2.暂存:DBFS 上的 Snappy Parquet


  • 重新分区以避免小文件。

  • 写入 Snappy Parquet 以发挥列式效率。

* 避免小文件—合理使用 coalesce() 或 repartition()

* Parquet 块大小 128MB

  • 创建稳定的分布式检查点。

3.处理:用 PyArrow 分块,而非 Pandas


按*row groups**迭代,而不是一次处理整个数据集。


  • 使用 pyarrow.parquet.ParquetFile() 打开文件

  • 通过.read_row_group() or .read_raw_group()读取每个分组

*至关重要的是跳过 Pandas 转换**,以避免 driver 端 OOM.

*直接转换为 Spark DataFrame,以进行分布式处理。

4.加载:使用 Native Spark Writer 至 Snowflake


  • 使用 spark-snowflake 连接器进行并行、高吞吐写入。

  • 利用 Snowflake 的 Apache Arrow 集成以提升速度。

5.稳定性:显式内存清理


  • 在每个分块处理后删除 DataFrame 引用。

*删除 DataFrame 对象

*显式丢弃所有列以释放内存

  • 手动触发垃圾回收 (gc.collect()).

  • 防止长时作业中的内存泄漏。结果:在单个 8GB worker 节点上对 1 亿+记录实现稳定执行,并在可预测的 2 小时窗口内完成(Approx)。


声明:本演示中所表达的观点和意见仅代表作者个人,并不必然反映 Novartis 或其任何附属机构或管理人员的官方政策或立场。


原文地址:

https://www.linkedin.com/pulse/rdbms-snowflake-copying-arabinda-mohapatra-pd3tc/?trackingId=BijEcXy2R12tcGL7PQ410A%3D%3D

2025-09-17 22:004805

评论

发布
暂无评论

软件测试|Python绘图神器matplotlib教程(三)

霍格沃兹测试开发学社

谷歌SEO搜索引擎优化怎么做?

九凌网络

软件测试|Python的流程控制,你真的会了吗?(一)

霍格沃兹测试开发学社

九凌网络:谷歌seo优化和外贸建站的五大优势

九凌网络

软件测试|教你使用Python快速绘制酷炫词云图

霍格沃兹测试开发学社

融云荣登「2023 年度 PaaS 企业排行榜」

融云 RongCloud

互联网 PaaS 通信 企业 即时通讯

软件测试|带你了解Python正则表达式模块(二)

霍格沃兹测试开发学社

24届秋招薪资大爆料

王磊

Java

软件测试|教你用Python操作Word文档(二)

霍格沃兹测试开发学社

外贸网站优化常用流程和一些常识

九凌网络

软件测试|Python流程控制,你真的会了吗(三)

霍格沃兹测试开发学社

服务器租还是托管?

Geek_f19a80

服务器 #运维

如何寻找优质的谷歌seo优化公司来提升你的外贸网站排名

九凌网络

一个java文件的JVM之旅 | 京东物流技术团队

京东科技开发者

Java JVM 类加载机制 企业号11月PK榜

亚马逊云服务器成了我的首选服务器

StackOverflow

云服务器 亚马逊云

外贸独立站推广谷歌seo优化的8大技巧

九凌网络

工赋开发者社区 | 智能物联网:概念、体系架构与关键技术

工赋开发者社区

软件测试|Python流程控制,你真的会了吗(二)

霍格沃兹测试开发学社

Databend 开源周报第 118 期

Databend

全面解析独立服务器:如何选择最适合你的方案?

一只扑棱蛾子

独立服务器

软件测试|Python matplotlib教程(二)

霍格沃兹测试开发学社

软件测试|一文教你学会Python文件 I/O 操作

霍格沃兹测试开发学社

FomePay 充值 ChatGPT Plus 详细教程

月满楼

ChatGPT ChatGPT4 chatgpt app chatgpt api

软件测试|带你了解Python正则表达式模块(一)

霍格沃兹测试开发学社

使用openpyxl库读取Excel文件数据

不在线第一只蜗牛

工具 数据 Excel 教程

完蛋!我被 Out of Memory 包围了! | 京东云技术团队

京东科技开发者

Java Linux 内存泄漏 Out Of Memory 企业号11月PK榜

轻量应用服务器到底香在哪?

格致君的planB

数字化 亚马逊云科技 轻量应用服务器

软件测试|教你用Python 操作Word文档(一)

霍格沃兹测试开发学社

软件测试|Python数据可视化神器——pyecharts教程(四)

霍格沃兹测试开发学社

从 RDBMS 到 Snowflake 的复制 | 技术实践_数据集成_Arabinda Mohapatra_InfoQ精选文章