我试图找出处理大数据 ETL 操作的最佳和最有效的方法。我的问题是这个。
假设我有一个大小约为 50 GB 的表。为了有效地将这个表中的数据从一个源传输到另一个源,特别是使用 PySpark,我是否需要超过 50 GB 的 RAM?
谢谢你的帮助。
我试图找出处理大数据 ETL 操作的最佳和最有效的方法。我的问题是这个。
假设我有一个大小约为 50 GB 的表。为了有效地将这个表中的数据从一个源传输到另一个源,特别是使用 PySpark,我是否需要超过 50 GB 的 RAM?
谢谢你的帮助。
一切都取决于输入表的分区。
这是2种方法:
这么短:
对于 ETL 数据准备:读取数据是通过分区并行完成的,每个分区都应该适合执行程序内存(到目前为止,还没有看到 50Gb 或 PB 数据的分区),因此 ETL 很容易批量完成并利用电源分区,对任何大小的数据集或表执行任何转换。
对于建模/ML/DS:当我们从建模/ML/DS 的角度来看,这一切都取决于所应用的模型,这就是为什么并非所有模型都可以扩展到 spark 并且大多数成功的 spark 模型是利用样本/子采样进行建模的集成或堆叠模型.
注意:如果您对分区大小的默认配置不满意,您可以通过 col/cols 重新分区 spark 数据帧,同样适用于处理/转换数据(使用 cols 或分区)。
一些资源: 显示 表的分区以及在 spark 中计算数据集大小的方法