限制火花数据帧的数据
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 社区中提出请求。以上是关于限制火花数据帧的数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将火花数据帧的“第一”行复制到另一个数据帧?为啥我的最小示例失败了?