【问题标题】: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
  • 这是数据块的限制,他们将在下一个版本中解决。

标签: scala apache-spark apache-spark-sql azure-databricks


【解决方案1】:

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

【讨论】:

  • 谢谢,我们正在过滤数据,很遗憾我们无法根据任何时间帧进行过滤,因为我们没有该表的这些字段。尽管我们的标准过滤器很少,但我们仍然面临问题。谢谢。
  • 我不确定,是否还有其他方法。也许我们需要在 Spark 社区中提出请求。
猜你喜欢
  • 2020-08-09
  • 2018-02-15
  • 2019-04-12
  • 1970-01-01
  • 2016-05-01
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多