当 Spark 主内存无法容纳文件时,Spark 如何读取大文件(PB)

2024-04-08

在这些情况下大文件会发生什么?

1)Spark从NameNode获取数据的位置。 Spark 是否会同时停止,因为根据 NameNode 的信息,数据大小太长?

2)Spark按照datanode块大小对数据进行分区,但所有数据不能存储到主内存中。这里我们没有使用StorageLevel。那么这里会发生什么呢?

3)Spark对数据进行分区,一些数据将存储在主内存上,一旦主内存存储的数据再次处理,Spark将从磁盘加载其他数据。


首先,Spark 仅在某个操作(例如count, collect or write) 叫做。一旦调用某个操作,Spark 就会将数据加载到分区- 并发加载分区的数量取决于可用核心的数量。所以在 Spark 中你可以认为 1 个分区 = 1 个核心 = 1 个任务。请注意,所有并发加载的分区都必须适合内存,否则您将遇到 OOM。

假设您有多个阶段,Spark 将仅在已加载的分区上运行第一个阶段的转换。一旦它对加载的分区中的数据应用转换,它将输出存储为随机数据,然后读取更多分区。然后,它对这些分区应用转换,将输出存储为随机数据,读取更多分区等等,直到读取所有数据。

如果您不应用任何转换,而只执行例如count,Spark仍会读入分区中的数据,但它不会在您的集群中存储任何数据,如果您执行以下操作count再次它会再次读入所有数据。为了避免多次读入数据,您可以调用cache or persist在这种情况下火花will尝试将数据存储在您的集群中。在cache(这与persist(StorageLevel.MEMORY_ONLY)它将把所有分区存储在内存中 - 如果它不适合内存,您将得到 OOM。如果你打电话persist(StorageLevel.MEMORY_AND_DISK)它将尽可能多地存储在内存中,其余的将存储在磁盘上。如果磁盘上放不下数据,操作系统通常会杀死你的工作人员。

请注意,Spark 有自己的小型内存管理系统。分配给 Spark 作业的部分内存用于保存正在处理的数据,部分内存用于存储(如果您调用)cache or persist.

我希望这个解释有帮助:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 Spark 主内存无法容纳文件时,Spark 如何读取大文件(PB) 的相关文章

随机推荐

  • FirebaseUI Auth - Facebook 登录错误:来自 Facebook 的 debug_token 响应失败

    我正在尝试集成 FirebaseUI Auth 库 Google 登录和电子邮件登录工作正常 但我在设置 Facebook 登录时遇到问题 这是我的代码 user firebaseAuth getCurrentUser if user nu
  • 跟踪 vb.net 中函数调用的持续时间

    在我们的 VB6 应用程序中 我们添加了一些实用函数来跟踪函数所花费的时间 我们这样做是为了跟踪性能瓶颈 基本上 它的工作原理是有两个实用函数 StartTickCount 和 EndTickCount 您将在每个函数中传递函数名称 函数将
  • 如何让我的 PUT_LINE 语句显示在 TOAD 中?

    此代码可以编译 但在 TOAD 中不会显示 hi wo 输出 CREATE OR REPLACE PROCEDURE AdelTest IS tmpVar NUMBER BEGIN DBMS OUTPUT ENABLE 100 in INT
  • 单击链接后,javascript何时停止在页面上运行?

    我有一个运行各种 javascript 代码的页面 包括调用setTimeout 如果用户单击链接导航到另一个页面 该页面上的 javascript 在什么时候停止运行 因此我的 setTimeout 调用的代码将不再被调用 例如 单击链接
  • 我如何使用 Android EffectFactory 类?

    我厌倦了开发带有图像处理的示例应用程序 在我的应用程序中我需要添加一些color effects Grayscale sepia 在我的位图上 我参考了开发人员文档Doc 1 http developer android com refer
  • react-native\react.gradle' 不存在

    我使用 React Native 创建了一个应用程序 并且正在尝试生成 apk 完成文档中的所有操作后http facebook github io react native docs signed apk android html con
  • 雅罗斯拉夫斯基的双主元快速排序算法

    我正在研究我发现的双枢轴快速排序here http aofa2013 lsi upc edu slides Nebel pdf 幻灯片第 20 页 比较 雅罗斯拉夫斯基平均需求 1 9 n ln n 经典快速排序需要 2 n ln n 比较
  • 多个 jQuery-UI 滑块的合计

    我正在尝试实现一个有 4 个 jQuery UI 滑块的页面 并且我想让所有 4 个滑块的总数永远不会超过 400 我不介意以哪种方式实现这一点 它可以从 0 开始 一旦您更改 1 个滑块 剩余的可用总数就会减少 或者将滑块设置为超过最大值
  • Dart 扩展了 Map 以便于延迟加载

    我正在尝试将数据从服务器延迟加载到地图中 出于这个原因 我想向 Map 添加功能 以便当键不存在时 会进行调用以获取值 我尝试的是这样的 class LazyMap extends Map use length for now When t
  • 保存大图像 - 光栅问题

    我已经问过如何保存大图像的问题 我认为我走在正确的轨道上 但我仍然需要一些建议 我有一个 12000 x 12000 的图像 我需要将其另存为 png 无法使用 BufferedImage 我已经被建议使用 RenderedImage 接口
  • 使 MediaController 显示而不隐藏

    我尝试使用 MediaController 来播放音乐 我希望 MediaController 出现 直到按下 后退 按钮 现在我尝试了下面的代码 MediaController mediaController new MediaContr
  • vim colorchem 显示不正确的颜色

    我刚刚抓住了 Ultimate Vim Distribution http vim spf13 com 它附带了一堆颜色方案 由于某种原因 在我的 vimrc 中设置颜色方案 例如 colorscheme 公司 会导致与颜色方案实际定义的颜
  • 为什么这个语句在 java 中不起作用 x ^= y ^= x ^= y;

    int x 1 int y 2 x y x y 我期望这些值被交换 但它给出 x 0 和 y 1 当我用C语言尝试时 它给出了正确的结果 您的陈述大致相当于此扩展形式 x x y y x x y 与 C 不同 在 Java 中 保证二元运算
  • 使用 ng-repeat 和过滤器时数组中对象的 $index

    我对 Angular 相当陌生 并且能够在某种程度上解决问题 但我似乎无法找到这个场景的答案 我有一系列对象 我正在从 firebase 中将其拉下来 我对对象使用 ng repeat 然后相应地显示数据 我试图将索引作为路由参数传递给 编
  • auto foo(...) ->decltype(this) 有一些解决方法吗?

    我有下一堂课 并尝试声明成员函数 该函数将返回指向该类型的指针 但下一个代码 template
  • Django Admin内联递归ManyToMany

    我有以下模型 其自身具有多对多关系 class Ticket models Model STATUS 0 Open 1 Closed status models SmallIntegerField default 0 choices STA
  • 将指针从基类型转换为子类型

    我正在为我的一个项目构建一个简单的游戏设计 我有以下课程 class Character public virtual void Display virtual void SetParameters char param class Non
  • 测量函数调用的 CPU 周期

    我正在寻找一种方法来测量线程上的函数调用所占用的 cpu 周期 伪代码示例 void HostFunction var startTick CurrentThread CurrentTick does not exist ChildFunc
  • 为什么我的 R 中的“Fizz Buzz”测试不起作用?

    我听说这是一个常见的面试问题 请问这里有什么想法 谢谢 for i in 1 100 if i 15 0 print fizzbuzz else if i 3 0 print fizz else if i 5 0 print buzz el
  • 当 Spark 主内存无法容纳文件时,Spark 如何读取大文件(PB)

    在这些情况下大文件会发生什么 1 Spark从NameNode获取数据的位置 Spark 是否会同时停止 因为根据 NameNode 的信息 数据大小太长 2 Spark按照datanode块大小对数据进行分区 但所有数据不能存储到主内存中