首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火花。数据缓存?

火花。数据缓存?
EN

Stack Overflow用户
提问于 2017-10-30 15:29:28
回答 1查看 68关注 0票数 1

我正在测试下面的脚本在星火壳单分区扫描的分区表。

代码语言:javascript
复制
val s = System.nanoTime

var q =
s"""
select * from partitioned_table where part_column = 'part_column_value' 
"""

spark.sql(q).show

println("Elapsed: " + (System.nanoTime-s) / 1e9 + " seconds")

第一次执行大约需要30秒,而所有后续的执行大约需要2秒。

如果我们看一下运行时统计信息--在第一次执行之前还有两个额外的作业。

看起来像有1212个阶段的作业扫描一个表中的所有分区(分区总数为1199,HDFS文件的总数为这个表- 1384)。

我没有找到一种方法来发现scala/java或SQL代码到底在为作业0运行什么,但我怀疑它是用于缓存的。

每次我退出shell并重新启动它时,我都会在第一次执行之前看到这两个额外的任务。当然,类似的观察也适用于其他查询。

问题

  1. 是否有可能证明或否定关于缓存的假设?
  2. 如果它是用于缓存-如何禁用缓存和如何清理它?

更新关于作业的详细信息.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-10 16:01:04

这个问题发生在特定的Spark版本2.0.2中。在构建计划和执行查询之前,Spark一直在扫描所有分区。

这些问题已记录在案,并在Spark2.1.0中修复。

https://issues.apache.org/jira/browse/SPARK-16980

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

https://stackoverflow.com/questions/47018941

复制
相关文章

相似问题

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