首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark问题:如果我不缓存数据帧,它会被多次运行吗?

Spark问题:如果我不缓存数据帧,它会被多次运行吗?
EN

Stack Overflow用户
提问于 2021-04-21 11:10:31
回答 1查看 33关注 0票数 0

如果我不缓存使用带有limit选项的spark SQL生成的dataframe,当我编辑得到的dataframe并显示它时,我会得到不稳定的结果吗?

描述。

我有一个类似下面的表格,它是通过使用带有limit选项的spark SQL生成的:

代码语言:javascript
复制
+---------+---+---+---+---+
|partition|   |  0|  1|  2|
+---------+---+---+---+---+
|        0|  0|  0| 10| 18|
|        1|  0|  0| 10| 17|
|        2|  0|  0| 13| 17|
+---------+---+---+---+---+

如果我添加一列来获得行和,并再次show()它,数据帧有不同的项目,如下所示:

代码语言:javascript
复制
+---------+---+---+---+---+-------+-----------+------------+------------------+------------------+
|partition|   |  0|  1|  2|row_sum|percent of |percent of 0|      percent of 1|      percent of 2|
+---------+---+---+---+---+-------+-----------+------------+------------------+------------------+
|        0|  0|  0| 10| 13|     23|        0.0|         0.0| 43.47826086956522| 56.52173913043478|
|        1|  0|  0| 13| 16|     29|        0.0|         0.0|44.827586206896555|55.172413793103445|
|        2|  0|  0| 15| 14|     29|        0.0|         0.0|51.724137931034484|48.275862068965516|
+---------+---+---+---+---+-------+-----------+------------+------------------+------------------+

我怀疑用于编辑从第一个spark SQL查询获得的原始数据帧的代码将导致重新运行第一个spark SQL查询并从新结果进行编辑。

这是真的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-21 12:02:11

spark中的Cache()是一种转换,当您在该数据帧上调用任何操作时,它都会延迟求值。

现在,如果您正在使用limit编写一个仅获取10条记录的查询,那么当您在其上调用像show这样的操作时,它将具体化代码并同时获取10条记录。现在,如果你没有缓存数据帧,如果你执行多个转换,并再次对新创建的数据帧执行一个操作,那么spark将从图的根开始执行转换,这就是为什么如果你不缓存该数据帧,你每次都会看到不同的输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67188830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档