限制火花数据帧的数据

Posted

技术标签:

【中文标题】限制火花数据帧的数据【英文标题】:Limit the data for spark dataframe 【发布时间】:2019-10-18 03:05:17 【问题描述】:

我正在使用 spark 数据框从 NOSQL 数据库中读取数据。由于在 databricks 中加载最大 40MB 数据是有限制的,我正在寻找一种限制数据的解决方案。我曾尝试使用 limit() 或 take() 选项,但两者都给我一个错误,因为它们先读取整个数据然后再限制。

在读取自身时会引发错误,我们是否可以在读取整个数据集之前限制数据?我们过滤了数据,只取了两列,但这些数据仍然很大。

ReadData = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri",connectionstring).option("pipeline",pipeline).load().limit(2000)

【问题讨论】:

您收到的确切错误消息是什么? mongodb.MongoCommandException:命令失败,错误 16501:'查询超出了允许的最大内存使用量 40 MB 这是数据块的限制,他们将在下一个版本中解决。 【参考方案1】:

我不确定读取一小部分数据的意图。一种选择是尝试应用过滤器,该过滤器可能会下推到数据库中,并可能导致记录数减少。

【讨论】:

谢谢,我们正在过滤数据,很遗憾我们无法根据任何时间帧进行过滤,因为我们没有该表的这些字段。尽管我们的标准过滤器很少,但我们仍然面临问题。谢谢。 我不确定,是否还有其他方法。也许我们需要在 Spark 社区中提出请求。

以上是关于限制火花数据帧的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将火花数据帧的“第一”行复制到另一个数据帧?为啥我的最小示例失败了?

在一列中获取火花数据帧的所有非空列

有没有办法将数据帧的一列中的所有行与另一个数据帧的另一列(火花)中的所有行进行比较?

在火花数据帧的不同行上应用不同的过滤器

如何在火花数据框组内进行计数(*)

如何截断火花数据框列的值? [复制]