Spark - 减少数据框大小并捕获它

Posted

技术标签:

【中文标题】Spark - 减少数据框大小并捕获它【英文标题】:Spark - reducing dataframe size & caching it 【发布时间】:2016-10-19 20:35:03 【问题描述】:

我在 Spark 中有一个非常大的 DataFrame,对其进行操作需要很长时间。

它有 10M 行。

我想对其进行采样,以便更快地进行测试,所以我正在尝试:

val redux = df.limit(1000)
redux.cache

我认为这会保留一个只有 1K 行的数据帧。

但例如运行redux.count 仍然需要很长时间(3 分钟)。

我在一个 8 个工作盒和 6 GB RAM(来自 DataBricks)上运行它。

我做错了吗?

谢谢!

【问题讨论】:

请再次运行 redux.count 并观察它是否更快 - 应该是 ;) 缓存是惰性的,它将在执行第一个操作时完成 是的!谢谢。在第一个动作之后,其他动作运行得非常快。 =D 【参考方案1】:

答案是:

缓存是惰性执行的,因此即使第一个“计数”操作会花费一些时间,但后续操作会更快。

感谢 T. Gaweda

【讨论】:

常用于 ML 算法 :) 缓存输入数据,然后计算简单的count() 进行缓存。接下来,当执行算法的迭代部分时,它适用于已经缓存的数据并且速度更快:)

以上是关于Spark - 减少数据框大小并捕获它的主要内容,如果未能解决你的问题,请参考以下文章

输入捕获文件减少和转换问题

如何捕获图片框中的图像并使其可以在c#应用程序中下载?

在 spark 中捕获已执行 sql 的异常

使用 Apache Spark 进行更改数据捕获

捕获 DataGrid 视图错误

如何在熊猫数据框中捕获连字符分隔数字的平均值?