为什么 Spark 在字数统计时速度很快? [复制]

2024-04-15

测试用例:Spark 在 20 秒以上对 6G 数据进行字数统计。

我明白映射减少, FP and stream编程模型,但无法弄清楚字数统计的速度如此惊人。

我认为这种情况下是I/O密集型计算,不可能在20秒以上扫描6G文件。我猜想在字数统计之前会执行索引,就像 Lucene 那样。魔法应该在RDD(弹性分布式数据集)我不太理解的设计。

如果有人能解释我很感激RDD对于字数统计的情况。谢谢!


首先是启动时间。 Hadoop MapReduce 作业启动需要启动多个单独的 JVM,速度并不快。 Spark 作业启动(在现有 Spark 集群上)会导致现有 JVM 分叉新任务线程,这比启动 JVM 快数倍

接下来,没有索引,也没有魔法。 6GB 文件存储在 47 个块中,每个块 128MB。想象一下,您有一个足够大的 Hadoop 集群,所有这 47 个 HDFS 块都驻留在不同的 JBOD HDD 上。它们中的每一个都将为您提供 70 MB/秒的扫描速率,这意味着您可以在大约 2 秒内读取此数据。通过集群中的 10GbE 网络,您只需 7 秒即可将所有这些数据从一台计算机传输到另一台计算机。

最后,Hadoop 多次将中间数据放入磁盘。它把map至少一次输出到磁盘(如果地图输出很大并且发生磁盘合并,则输出更多次)。下次将数据写入磁盘reduce之前的一侧reduce本身被执行。 Spark 在运行期间仅将数据写入 HDD 一次shuffle阶段,参考 Spark 实现建议增加文件系统写入缓存,以免此“随机”数据命中磁盘

与 Hadoop 相比,所有这些都为 Spark 带来了巨大的性能提升。 Spark RDD 中没有与此问题相关的魔法

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

为什么 Spark 在字数统计时速度很快? [复制] 的相关文章

  • 在 Spark 中分发 scikit learn 分类器的推荐方法是什么?

    我已经使用 scikit learn 构建了一个分类器 现在我想使用 Spark 在大型数据集上运行 Predict proba 我目前使用以下方法对分类器进行腌制 import pickle pickle dump clf open cl
  • 在 Spark-submit 上的 _find_and_load 中获取文件“”,第 991 行

    我目前使用的是Python 3 7 9 spark spark 2 4 6 bin hadoop2 6 在这个项目 venv 中 我的设置为 kafka python 2 0 2 pip 21 2 4 py4j 0 10 9 pyspark
  • OpenMP 线程映射到物理内核

    于是我在网上查了一段时间没有结果 我是 OpenMP 的新手 所以不确定这里的术语 但是有没有办法从 OMPThread 由 omp get thread num 给出 和线程将运行的物理核心找出特定机器的映射 我还对 OMP 分配线程的精
  • 使用 pyspark 连接 PostgreSQL

    我正在尝试使用 pyspark 连接到数据库 并且使用以下代码 sqlctx SQLContext sc df sqlctx load url jdbc postgresql hostname database dbtable SELECT
  • Spark 按列重新分区,每列动态分区数

    如何根据列中的项目数对 DataFrame 进行分区 假设我们有一个包含 100 人的 DataFrame 列是first name and country 我们希望为一个国家 地区的每 10 个人创建一个分区 如果我们的数据集包含 80
  • Python Spark DataFrame:用 SparseVector 替换 null

    在 Spark 中 我有以下名为 df 的数据框 其中包含一些空条目 id features1 features2 185 5 0 1 4 0 1 0 null 220 5 0 2 3 0 1 0 10 1 2 6 0 1 225 null
  • 司机下令停车后 Spark 工作人员停下来

    基本上 主节点也充当从节点之一 一旦主服务器上的从服务器完成 它就会调用 SparkContext 来停止 因此该命令传播到所有从服务器 从而在处理过程中停止执行 其中一名工作人员登录时出错 信息 SparkHadoopMapRedUtil
  • 如何使用 Scala 在 Spark 中漂亮地打印 JSON 数据帧?

    我有一个数据帧 我想将其作为有效的 json 写入 json 文件 我当前的代码如下所示 val df DataFrame myFun df toJSON saveAsTextFile myFile json 输出的格式为 如何将文件内容组
  • 使用 mlib 执行 Spark-Shell,错误:对象 jblas 不是包 org 的成员

    在spark shell中 当我执行import org jblas DoubleMatrix 它会在 RHEL 上抛出 错误 对象 jblas 不是包 org 的成员 实际上 我用谷歌搜索了 jblas 并安装了 gfortran htt
  • Spark Scala:按小时或分钟计算两列的 DateDiff

    我在数据框中有两个时间戳列 我想获取它们的分钟差异 或者小时差异 目前我可以通过四舍五入获得日差 val df2 df1 withColumn time datediff df1 ts1 df1 ts2 但是 当我查看文档页面时https
  • hadoop中reducer的数量

    我正在学习hadoop 我发现减速器的数量非常令人困惑 1 reducer的数量与partition的数量相同 2 reducer 的数量是 0 95 或 1 75 乘以 节点数 每个节点的最大容器数 3 减速机数量设定为mapred re
  • 列对象不可调用 Spark

    我尝试安装 Spark 并运行教程中给出的命令 但出现以下错误 https spark apache org docs latest quick start html https spark apache org docs latest q
  • 无法在 SBT 中运行 Apache Spark 相关单元测试 - NoClassDefFoundError

    我有一个简单的单元测试 使用SparkContext 我可以在 IntelliJ Idea 中运行单元测试 没有任何问题 但是 当尝试从 SBT shell 运行相同的测试时 我收到以下错误 java lang NoClassDefFoun
  • 如何将模型从 ML Pipeline 保存到 S3 或 HDFS?

    我正在尝试保存 ML Pipeline 生成的数千个模型 正如答案中所示here https stackoverflow com questions 32121046 run 3000 random forest models by gro
  • 如何从字符串列中提取数字?

    我的要求是从列中的评论列中检索订单号comment并且总是开始于R 订单号应作为新列添加到表中 输入数据 code id mode location status comment AS SD 101 Airways hyderabad D
  • C# 的快速线程安全随机数生成器

    我需要在多个正在运行的线程中快速生成随机浮点数 我尝试过使用System Random 但它对于我的需求来说太慢了 并且它在多个线程中返回相同的数字 当我在单线程中运行应用程序时 它工作正常 此外 我需要确保生成的数字在 0 到 100 之
  • jq Streaming - 过滤嵌套列表并保留全局结构

    在一个大型 json 文件中 我想从嵌套列表中删除一些元素 但保留文档的整体结构 我的示例将其输入为 但真实的输入足够大以要求流式传输 keep untouched keep this this list filter this keep
  • 如何将模型结果保存到文本文件?

    我正在尝试将从模型生成的频繁项集保存到文本文件中 该代码是 Spark ML 库中 FPGrowth 示例的示例 Using saveAsTextFile直接在模型上写入 RDD 位置而不是实际值 import org apache spa
  • 如何在 Emgu CV 项目中利用 OpenCL

    我是使用 Emgu CV 的新手 并开始创建小型示例项目 例如面部检测 眼睛检测等 如果我可以利用 OpenCL 来加速使用 GPU 的过程 那就太好了 否则 当我降低scaleFactor时 它会导致大量的CPU利用率 我怎样才能做到这一
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez

随机推荐

  • 打造 ecto 独一无二的领域

    如何制作一个字段unique在体外 我以为它和Ruby中的活动记录一样 但似乎不是 你想使用唯一约束 3 http hexdocs pm ecto Ecto Changeset html unique constraint 3 这与 Act
  • 如果 MySQL 中的行不存在,则添加到该行

    当向表中添加一行时 但首先检查它是否存在哪种处理方法最有效 是否是查询是否存在的情况 如果不存在则插入 或者重复使用 或者简单地替换 如果该行不存在 这会起作用 吗 Thanks 我认为这是 MySQL 中最快的方法 REPLACE int
  • 不可变类型:公共最终字段与 getter

    我需要一个小的容器类来存储一些应该不可变的字符串 由于 String 本身是不可变类型 所以我想到了类似的东西 public final class Immu public final String foo public final Str
  • 从 airodump-ng 读取实时输出

    当我执行命令 airodump ng mon0 gt gt output txt 时 output txt 为空 我需要能够运行 airodump ng mon0 并在大约 5 秒后停止该命令 然后才能访问其输出 有什么想法我应该从哪里开始
  • 如何以良好的格式结果格式化 python 列表

    我有很多列表 如下所示 通过打印data并将其与字符串连接起来check str如下最后一条语句所示 需要帮助以在字符串连接后更好地格式化列表值 如预期所示 print data printing lists in this variabl
  • 图像上的文本没有绝对位置

    我正在尝试在页面中间的图像上放置一些文本 我看到一个这样的例子 img src image png p p p p
  • 在 docker 容器上保存配置

    我创建了 2 个 docker 容器 并尝试在 ubuntu debian 上安装一些应用程序和一些软件包 如 mc ping traceroute 但每当我退出容器时 我都会丢失其中的所有内容 是否有任何 docker 命令可以保存我的配
  • 从具有特定模式的 txt 文件创建 Pandas DataFrame

    我需要基于以下结构的文本文件创建一个 Pandas DataFrame Alabama edit Auburn Auburn University 1 Florence University of North Alabama Jackson
  • .NET Framework 全局程序集缓存在哪里?

    我安装了 VS2010 和 NET 4 0 然后编译了一个程序集并使用可用的 exe 运行 gacutil ProgramFiles Microsoft SDKs Windows v7 0A Bin NETFX 4 0 Tools 可执行文
  • 如何在 R 中重新格式化表格?

    我加载了一个这样的表 V1 V2 V3 pat1 1 2 pat1 3 1 pat1 4 2 pat2 3 3 pat3 1 4 pat3 2 3 我需要将其格式化为如下所示 其中 V1 表示行 V2 表示列 V3 中的值 1 2 3 4
  • Android 中未接来电的广播接收器

    有谁知道未接来电的意图是什么 实际上 我想在我的应用程序中发送有关未接来电和来电的短信 您需要使用 ContentObserver public class MissedCallsContentObserver extends Conten
  • fork 后调试子进程(配置了 follow-fork-mode 子进程)

    我正在开发一个应用程序 父级分叉子级来处理某些任务 我遇到一个问题 我已将 gdb 配置为 follow fork mode 子级 但在 fork 后 到达断点后 它发送 SIGTRAP 但子级以某种方式终止并向父级发送 SIGCHLD 我
  • 数据表行切换选项

    我的问题 我正在开发一个与 DataTableJS 相关的项目 我需要一个行分组功能 它与分组行分开 只是我想在下面的切换中显示相关的表行内容城市名 我到底在寻找什么 我的演示代码 document ready function var t
  • Swagger 无法生成 HTTP“PATCH”的文档

    我已遵循以下内容博客条目 http kingsfleet blogspot co uk 2014 02 transparent patch support in jax rs 20 html http Transparent 20PATCH
  • 在 htaccess 文件中使用公用文件夹时的多种语言

    我有这个 htacces文件我很喜欢它 但是如何向它添加多语言 所以它明白localhost en 不是文件或文件夹 现在它使用公共文件夹作为 根 所以localhost public 如果我想这样做 那太好了 我仍然使用公共文件夹作为根目
  • JetBrains(IntelliJ、PhpStorm、WebStorm ...)带有 SSH 密钥的私有 git 存储库

    我的新 Web 服务器需要使用 RSA 2048 密钥进行身份验证 因此我生成了一个密钥 我将ir rsa and id rsa pub我的主文件夹中的文件 ssh Windows 10 但是当我使用 cvs 注释 用于拉或推 时 我收到错
  • 通过查找按组快速 data.table 分配多列

    我一直在寻找规范的方法来完成我正在尝试的事情 但我似乎不太幸运地获得快速而优雅的工作 简而言之 我有一个包含多个值列的大表 并且希望将每个值乘以查找表中的相应因子 我不知道如何动态传递我想要乘以查找值的列 或者如何在基本表达式之外引用查找值
  • C语言中如何清空数组?

    char x 1000 x hello 我会用什么来清除内容x 我无法重新初始化它 请使用strcpy x 0 or free 您不能将任何内容分配给您的变量数组x是 因此 任何以x 是错的 第二 hello 不是字符串 它是一个多字符文字
  • Google Analytics 3.0 身份验证流程

    EDIT 最初这个问题问我如何仅使用我的 API 密钥通过 Google Analytics API 进行身份验证 作为弗拉特科指出 https stackoverflow com a 13834210 697449 这是不可能的 现在我只
  • 为什么 Spark 在字数统计时速度很快? [复制]

    这个问题在这里已经有答案了 测试用例 Spark 在 20 秒以上对 6G 数据进行字数统计 我明白映射减少 FP and stream编程模型 但无法弄清楚字数统计的速度如此惊人 我认为这种情况下是I O密集型计算 不可能在20秒以上扫描