根据大小(mb/gb)读取 spark 数据帧

Posted

技术标签:

【中文标题】根据大小(mb/gb)读取 spark 数据帧【英文标题】:Read spark dataframe based on size(mb/gb) 【发布时间】:2020-09-02 05:57:07 【问题描述】:

在这种情况下请帮助我, 我想根据大小(mb/gb)而不是行数来读取火花数据帧。假设我的数据库中有 500 MB 空间留给用户,并且用户想要再插入 700 MB 数据,那么我如何从 Jdbc 驱动程序中识别表大小,以及如何从我的 700 MB spark 数据帧中仅读取 500 MB 数据.

【问题讨论】:

你不能这样做,这样做是不正确的。相反,计算平均行大小,然后计算可以容纳在 500M 空间中的行数,并仅 take() 那些记录。 【参考方案1】:

在程序中限制数据大小是不正确的。您应该捕获异常并将其显示给用户。由用户决定是否要增加数据库大小或从数据库中删除不需要的数据。

对于上述问题,spark 有一个叫做 size estimator 的东西。我以前没用过。但是你可能不会得到准确的数据大小,因为它是一个估计器

import org.apache.spark.util.SizeEstimator
SizeEstimator.estimate(df)

更多信息请参考this。

【讨论】:

感谢您的建议,但不幸的是它在我的情况下不起作用。

以上是关于根据大小(mb/gb)读取 spark 数据帧的主要内容,如果未能解决你的问题,请参考以下文章

根据文件大小自动判断单位B,KB,MB,GB

Spark 从不同的模式目录读取数据帧

通过读取具有不同数据类型的 Scala 序列来创建 Spark 数据帧

将 Spark 数据帧保存为 Hive 中的动态分区表

如何从 BigQuery 读取分区表到 Spark 数据帧(在 PySpark 中)

读取 CSV 后具有奇怪值的 Spark 数据帧