首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于火花的持久化机制

关于火花的持久化机制
EN

Stack Overflow用户
提问于 2018-04-13 10:56:28
回答 1查看 267关注 0票数 2

我正面临一个与火花的持久化机制有关的奇怪问题。我试图使用以下spark (2.1.1)配置来持久化相当大的数据集(MEMORY_AND_DISK_SER):

-num-执行程序27 --执行程序-内存30 27-执行程序-核心5

  • 我正在运行星火应用程序的集群具有以下特点:

节点数: 9,每个节点内存:100 15,每个节点核心:15

  • 该数据集有:

810个分区(27*5*6)

数据集的内存大小为1.4TB,这就解释了为什么我要使用MEMORY_AND_DISK_SER持久性。但是,在某个时候,当每个节点的15G (30*0.5)被完全用于内存持久性,而不是写入磁盘时,火花执行器就会失败,火花程序也会失败。有没有人面临过这样的问题?有人能提出另一种解决方案吗?我绝对需要持久化我的数据集,因为重新计算它们非常(非常!)太贵了。

同样地,我有一个关于持久性顺序的问题。让我们假设,我的代码如下:

代码语言:javascript
复制
Dataset<T> mydataset = loading a file;
mydataset.map(...).persist().count();
Dataset<T> mydataset2 = mydataset.map(...);
mydataset.unpersist();
mydataset2.persist().count();

我知道坚持是一种懒惰的行为。如果我分解代码,我会假设我的数据集将被计算并持久化,那么,mydataset2将使用mydataset (它是持久化的)进行计算。Mydataset立即取消持久化,并被内存存储中的mydataset2所取代。对吧?我在SparkUI上注意到的是,在计算mydataset2之前,我的数据集是非持久化的。这是预期的行为还是我遗漏了什么?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-04-13 11:19:43

我的建议是(如果您有选择的话),只需将数据集写到HDFS中,然后将其读取回HDFS。保持简单!在过去,我发现了缓存/持久化的各种奇怪问题,并且通常得出结论,稍微长一点的运行时比我花时间进行持久工作更值得;如果一开始制作数据集的代价很高,那么这种情况就会特别严重。

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

https://stackoverflow.com/questions/49815391

复制
相关文章

相似问题

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