根据大小(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 数据帧的主要内容,如果未能解决你的问题,请参考以下文章
通过读取具有不同数据类型的 Scala 序列来创建 Spark 数据帧