如何控制RDD分区的首选位置?

2024-03-10

有没有办法手动设置RDD分区的首选位置? 我想确保在特定机器上计算特定分区。

我使用数组和“Parallelize”方法从中创建 RDD。

另外我没有使用 HDFS,文件位于本地磁盘上。这就是为什么我要修改执行节点。


有没有办法手动设置RDD分区的preferredLocations?

是的,有,但它是 RDD 特定的,因此不同类型的 RDD 有不同的方法来做到这一点。

火花用途RDD.preferredLocations获取计算每个分区/分割的首选位置列表(例如 HDFS 文件的块位置)。

最终 def PreferredLocations(split: Partition): Seq[String]

获取分区的首选位置,同时考虑 RDD 是否设置了检查点。

正如你所看到的方法是final这意味着没有人可以超越它。

当你看着源代码 https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala?utf8=%E2%9C%93#L273-L277 of RDD.preferredLocations您将看到 RDD 如何知道其首选位置。它正在使用受保护的RDD.getPreferredLocations https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/RDD.scala?utf8=%E2%9C%93#L137自定义 RDD 可以(但不必)重写以指定放置首选项的方法。

protected def getPreferredLocations(split: Partition): Seq[String] = Nil

因此,现在的问题已经“演变”为另一个问题,即哪些 RDD 允许设置其首选位置。找到你的并查看源代码。

我使用数组和“Parallelize”方法从中创建 RDD。

If you parallelize你的本地数据集不再是分布式的,而且可以是这样的,但是......为什么你想使用 Spark 来处理可以在单个计算机/节点上本地处理的东西?

然而,如果您坚持并且确实想将 Spark 用于本地数据集,那么背后的 RDDSparkContext.parallelize是...让我们看一下源代码...并行集合RDD https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/SparkContext.scala?utf8=%E2%9C%93#L715 which 确实允许位置偏好 https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/rdd/ParallelCollectionRDD.scala#L89.

然后让我们将您的问题改写为以下内容(希望我不会丢失任何重要事实):

允许创建的运算符有哪些ParallelCollectionRDD并明确指定位置偏好?

令我惊讶的是(因为我不知道该功能),有这样一个运算符,即SparkContext.makeRDD https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/SparkContext.scala?utf8=%E2%9C%93#L804-L814,...接受每个对象的一个​​或多个位置首选项(Spark 节点的主机名)。

makeRDD[T](seq: Seq[(T, Seq[String])]): RDD[T]分发本地 Scala 集合以形成 RDD,每个对象具有一个或多个位置首选项(Spark 节点的主机名)。为每个集合项创建一个新分区。

换句话说,而不是使用parallelise你必须使用makeRDD(Scala 的 Spark Core API 中提供了该功能,但我不确定我将作为家庭练习留给您的 Python :))

我将同样的推理应用于创建某种 RDD 的任何其他 RDD 运算符/转换。

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

如何控制RDD分区的首选位置? 的相关文章

  • 非时间戳列上的 Spark 结构化流窗口

    我收到以下形式的数据流 id timestamp val xxx 1 12 15 25 50 1 2 12 15 25 30 1 3 12 15 26 30 2 4 12 15 27 50 2 5 12 15 27 30 3 6 12 15
  • Spark scala - 按数组列分组[重复]

    这个问题在这里已经有答案了 我对 Spark Scala 很陌生 感谢你的帮助 我有一个数据框 val df Seq a a1 Array x1 x2 a b1 Array x1 a c1 Array x2 c c3 Array x2 a
  • TaskSchedulerImpl:初始作业尚未接受任何资源;

    这就是我正在尝试做的事情 我创建了DataStax企业集群的两个节点 在其上创建了一个java程序来获取一张表 Cassandra数据库表 的计数 该程序是在 eclipse 中构建的 实际上是来自 windows 盒子 从 Windows
  • 获取 Spark 中组的最后一个值

    我有一个 SparkR DataFrame 如下所示 Create R data frame custId lt c rep 1001 5 rep 1002 3 1003 date lt c 2013 08 01 2014 01 01 20
  • 按分区“内”键进行高效分组

    我正在尝试调整一个流程来激发火花 基本上 该过程分析来自 JDBC 数据源的批量数据 每条记录都有一个batchId 还有一个更高级别的groupId 批次数量较大 提前未知 组数约为 100 RAM 中可以容纳每个批次的记录数 实际的分析
  • 使用Log4j在日志中输出Spark应用程序id

    我有一个用于 Spark 应用程序的自定义 Log4j 文件 我想输出 Spark 应用程序 ID 以及消息和日期等其他属性 因此 JSON 字符串结构如下所示 name time date level thread message app
  • pyspark.pandas 与 pandas 有什么区别?

    开始在 Databricks 上使用 PySpark 我发现我可以导入pyspark pandas旁边pandas 有什么不同 我认为这不像koalas right PySpark 是 Python 中 Apache Spark 的接口 它
  • pyspark:计算窗口上的不同值

    我刚刚尝试做一个countDistinct越过一个窗口并得到这个错误 AnalysisException 不支持不同的窗口函数 计数 不同颜色 1926 有没有办法在 pyspark 的窗口上进行不同的计数 这是一些示例代码 from py
  • 在Python Spark中查看RDD内容?

    在 pyspark 中运行一个简单的应用程序 f sc textFile README md wc f flatMap lambda x x split map lambda x x 1 reduceByKey add 我想使用 forea
  • Spark:如何从spark shell运行spark文件

    我正在使用CDH 5 2 我能够使用火花外壳运行命令 如何运行包含 Spark 命令的文件 file spark 有没有办法在没有 sbt 的情况下在 CDH 5 2 中运行 编译 scala 程序 在命令行中 您可以使用 spark sh
  • Twitter API 与 Scala 2.12 一起使用

    我正在使用 Scala 2 12 使用 SBT 构建 构建 Spark 3 0 0 流应用程序 鉴于所有用于执行此操作的库均适用于 Scala EDIT 我尝试使用库构建时得到的示例输出 object twitter is not a me
  • Spark - java.lang.OutOfMemoryError:请求的数组大小超出 VM 限制

    我正在尝试对 Cloudera 的 Spark 2 1 0 中的数据帧进行 groupBy 操作 该集群位于总 RAM 约为 512GB 的 7 节点集群上 我的代码如下 ndf ndf repartition 20000 by user
  • Spark 上的 Hive 2.1.1 - 我应该使用哪个版本的 Spark

    我在跑蜂巢2 1 1 Ubuntu 16 04 上的 hadoop 2 7 3 根据Hive on Spark 入门 https cwiki apache org confluence display Hive Hive on Spark
  • 将案例类传递给函数参数

    抱歉问了一个简单的问题 我想将案例类传递给函数参数 并且想在函数内部进一步使用它 到目前为止我已经尝试过这个TypeTag and ClassTag但由于某种原因 我无法正确使用它 或者可能是我没有看到正确的位置 用例与此类似 case c
  • 在 Spark 中分发 scikit learn 分类器的推荐方法是什么?

    我已经使用 scikit learn 构建了一个分类器 现在我想使用 Spark 在大型数据集上运行 Predict proba 我目前使用以下方法对分类器进行腌制 import pickle pickle dump clf open cl
  • Spark:Aggregator和UDAF有什么区别?

    在Spark的文档中 Aggregator 抽象类聚合器 IN BUF OUT 扩展可序列化 用户定义聚合的基类 可以是 在数据集操作中用于获取组中的所有元素并 将它们减少到单个值 用户定义的聚合函数是 抽象类 UserDefinedAgg
  • 使用 pyspark 连接 PostgreSQL

    我正在尝试使用 pyspark 连接到数据库 并且使用以下代码 sqlctx SQLContext sc df sqlctx load url jdbc postgresql hostname database dbtable SELECT
  • Scala 和 Spark:Windows 上的 Dataframe.write._

    有人设法使用 Spark 写入文件 尤其是 CSV 吗 数据框 http spark apache org docs latest api scala index html org apache spark sql Dataset在 Win
  • 将 Spark 数据框中的时间戳转换为日期

    我见过 这里 如何将DataFrame中的时间戳转换为日期格式 https stackoverflow com questions 40656001 how to convert timestamp to date format in da
  • 如何在 Mac 上使用 homebrew 安装 apache-spark 2.3.3

    brew install apache spark只安装最新版本的 Spark 2 4 和 brew search apache spark没有给出任何其他选项 有没有办法用自制程序安装旧版本的 Spark Type brew tap ed

随机推荐

  • winform中如何只验证数字?

    如何在不使用按键选项的情况下验证数字 为什么不是Char IsNumber or IsDigit在职的 或者我应该使用正则表达式进行验证 private bool ValidateContact if Char IsNumber textB
  • Java:将浮点二进制转换为浮点十进制

    我想转换表示 IEEE754 双精度数尾数部分的字符串 找不到Java中是否有这样的转换方法 以避免手动添加1 1 2 1 4 1 8等 010000001100101000011111000000000000000000000000000
  • htaccess 清理 URL 的最佳方法是什么?

    我正在为我的网站开发干净的网址 我注意到您在互联网上找到的内容几乎都是将您的干净网址重写为您的服务器可以使用的网址 所以像这样 www domain com profile username gt www domain com profil
  • 用于分析 .Net 应用程序内存转储的工具

    有人可以推荐一个好的吗free除了 Adplus windbg sos 之外 还有用于分析 Net 内存转储的工具吗 你可以尝试一下调试诊断1 1 http blogs msdn com tess archive 2008 05 21 de
  • 是什么导致 Python 错误“bad escape \C”?

    我刚刚编写了一个函数 它将查看文本文件并计算文本文件中 True 和 False 的所有实例 这是我的文件 ATOM 43 CA LYS A 5 14 038 15 691 37 608 1 00 15 15 C True ATOM 52
  • Raft算法:term什么时候会增加?

    Raft将时间划分为任意长度的术语 如图5所示 术语用连续的整数编号 每个任期以一次选举开始 其中一名或多名候选人试图成为领导者 如第 5 2 节所述 如果候选人赢得选举 那么他将在剩余任期内担任领导者 在某些情况下 选举会导致投票分散 在
  • 为什么从搅拌机导出到 Unity 时我的 (FBX) 网格体有孔?

    我现在正在学习雕刻我的角色 当我将 FBX 文件从 Blender 导出到 Unity 时 网格物体的脸上有一个巨大的洞 我该如何预防 解决这个问题 它在 mixamo 中工作得很好 在此输入图像描述 https i stack imgur
  • C++11 中字符串文字的 Unicode 编码

    继一个相关问题 https stackoverflow com questions 6794590 how does file encoding affect c11 string literals 我想问一下C 11中新的字符和字符串文字
  • NUnit 插件与 Resharper 5

    最新的 Resharper v5 版本基于本机 NUnit 代码并允许 NUnit 插件 我有一个 NUnit 插件 可以在 NUnit GUI 中正常工作 但无法使其与 Resharper 一起工作 根据 R 指示 我已将插件库放入 Re
  • 如何使用 PHP/MySQLi 将 NULL 放入 MySQL 整数列?

    我通过 URL 将值传递到 PHP 页面 并在 MySQLi 查询中使用它们 问题在于 对于整数列 空字符串会转换为零 而实际上它需要为 NULL 如何使用 PHP MySQLi 从 URL 中传递的参数获取 NULL 到整数列中 更新 下
  • 不推荐在 build.gradle 中“启用”Android 数据绑定

    in build gradle file dataBinding enabled true enabled已弃用 找不到任何有关它的文档 任何人有任何想法如何解决它 尝试将其替换为 buildFeatures dataBinding tru
  • 获取多个 Pandas DataFrame 的平均值

    我正在生成许多具有相同形状的数据框 并且我想将它们相互比较 我希望能够获得数据帧的平均值和中位数 Source 0 Source 1 Source 2 Source 3 cluster 0 0 001182 0 184535 0 81423
  • 无法让 SendInput() 工作

    我有点绝望了我已经尝试了几个小时了 但就是无法得到SendInput 上班 说实话 我什至无法得到它的认可 它总是说 Error 1 The type or namespace name INPUT could not be found a
  • 如何将页面分为三个垂直部分?

    我想将我的网页转换为四个部分 一横三竖 水平截面还可以 但是垂直截面有两个问题 它们没有填满整个屏幕高度 第三部分与第二部分重叠近10或20个像素 这是我的CSS body width available height available
  • Maven 3 密码加密是如何工作的?

    我正在尝试了解 Maven 3 的 密码加密功能 我发现这个功能的文档记录很少并且令人困惑 例如 功能文档 https maven apache org guides mini guide encryption html and 该功能作者
  • Android getX/getY 交错相对/绝对坐标

    有很多关于 MotionEvent getX getY 如何 不可靠 或其他术语 的讨论 以及我们应该使用这些调用的原始版本来获取坐标 在我的 Nexus 7 上 我发现 getX getY 可靠地返回交错的绝对和相对坐标 换句话说 假设给
  • 获取 AccessibilityNodeInfo 视图以创建叠加层

    我正在写一个AccessibilityService我想在无障碍服务可以检索的当前活动的视图上创建视图覆盖 我可以毫无问题地检索所有内容AccessibilityNodeInfo当前活动中的对象 但我不知道如何从这些对象获取视图来创建叠加层
  • Filesystemwatcher 导致“目录 C:\ 中一次发生太多更改错误”

    像其他一些人一样 当文件系统观察程序执行其工作时 我收到错误 目录 C 中一次错误太多更改 现在如果是c 显然有很多变化 但在这种特殊情况下 我设置了以下参数 Path C Filter test1 txt NotifyFilter Not
  • 检查内容是否溢出

    我需要知道我的内容何时溢出我的 div 如果是这样 我将放置一个链接 以便在新窗口中打开包含所有内容的页面 Cheers DalexL 使用 jQuery 和文本溢出时的选取框文本 https stackoverflow com quest
  • 如何控制RDD分区的首选位置?

    有没有办法手动设置RDD分区的首选位置 我想确保在特定机器上计算特定分区 我使用数组和 Parallelize 方法从中创建 RDD 另外我没有使用 HDFS 文件位于本地磁盘上 这就是为什么我要修改执行节点 有没有办法手动设置RDD分区的