Spark 作业执行时间随着非常宽的数据集和列数呈指数增长[重复]

2023-11-29

我在 Spark 中创建了一个固定宽度的文件导入解析器,并对各种数据集执行了一些执行测试。 它在最多 1000 列的情况下工作正常,但是,随着列数和固定宽度长度的增加,Spark 作业性能迅速下降。在20k列和固定宽度长度超过10万的情况下执行需要花费大量时间。

造成这种情况的可能原因有哪些? 我怎样才能提高性能?

我发现的类似问题之一:

http://apache-spark-developers-list.1001551.n3.nabble.com/Performance-Spark-DataFrame-is-slow-with-wide-data-Polynomial-complexity-on-the-number-of-columns- is-td24635.html


如果您有更多列,最好将记录读取/转换为数组,并使用切片函数将其映射到各个列。使用子字符串来获取各个列的效率不会那么高。

EDIT 1:

我使用 Array[String] 作为示例,将其附加到 scala 中的案例类 Record() 中。您可以将其扩展到 hdfs 文本文件

scala> case class Record(a1:String,a2:Int,a3:java.time.LocalDate)
defined class Record

scala>  val x = sc.parallelize(Array("abcd1232018-01-01","defg4562018-02-01"))
x: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[3] at parallelize at <console>:24

scala> val y = x.map( a => Record( a.slice(0,4), a.slice(4,4+3).toInt,java.time.LocalDate.parse(a.slice(7,7+10))))
y: org.apache.spark.rdd.RDD[Record] = MapPartitionsRDD[4] at map at <console>:27

scala> y.collect()
res3: Array[Record] = Array(Record(abcd,123,2018-01-01), Record(defg,456,2018-02-01))

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

Spark 作业执行时间随着非常宽的数据集和列数呈指数增长[重复] 的相关文章

  • 凿子“Enum(UInt(), 5)”失败

    当我尝试使用 Chisel 构建 FSM 时 我使用了 Enum 如 Chisel 教程所述 然而 我遇到了这样的错误 my code val sIdle s1 s2 s3 s4 Nil Enum UInt 5 但是 当我执行时sbt ru
  • Slick 3 交易

    我对 slick 3 文档描述事务的方式感到困惑 我有 2 个光滑的代码 如下所示 def doSomething DB withTransaction implicit session gt userDao doSomething add
  • 错误:使用替代方法写入重载方法值:

    我正在尝试读取固定宽度的文件并将其写入文本文件 下面是代码 输入文件布局字段的长度 4 10 3 5 3 1 1 5 7 094482018 07 10 022 14012 000 0 30000A 002290 059412018 07
  • 在 PySpark 中将结构数组扩展为列

    我有一个来自 Google Analytics 的 Spark 数据框 如下所示 id customDimensions Array
  • Scala 插入列表中的特定位置

    这是我确实解决的问题 但是作为一个完全命令式的 Scala 菜鸟 我觉得我发现了一些完全不优雅的东西 任何改进的想法表示赞赏 val l1 4 1 2 3 4 Nil original list val insert List 88 99
  • 如何跟踪通过elastic4s客户端发送到Elasticsearch的json请求?

    假设我使用这样的代码 ElasticClient client client execute search in places gt cities query paris start 5 limit 10 如何查看发送到 Elasticse
  • 用于在 pyspark 中处理大数的数据类型

    我将 Spark 与 python 一起使用 上传 csv 文件后 我需要解析 csv 文件中的一列 其中包含 22 位数字长的数字 为了解析我使用的列长类型 我使用 map 函数来定义列 以下是我在 pyspark 中的命令 gt gt
  • 检查 pyspark df 列的值是否存在于其他 pyspark df 列中

    我有 2 个 pyspark 数据帧 我想检查一列的值是否存在于另一个数据帧的列中 我只看到了如何过滤存在的值的解决方案 像这样 https stackoverflow com questions 41775281 filtering a
  • Scala 中简单表达式的非法开始

    我刚刚开始学习scala 在尝试实现递归函数时 我在 Eclipse 中收到错误 简单表达式的非法开始 def foo total Int nums List Int if total nums sorted head 0 0 else r
  • 抽象类型与类型参数

    在什么情况下抽象类型应该优先于类型参数 添加到我的之前关于抽象类型与参数的回答 https stackoverflow com questions 1154571 scala abstract types vs generics 11547
  • zip 样式 @repeat 嵌套形式

    repeat非常有用 然而 我遇到了嵌套表单的障碍 我需要制作一个比赛日程表 它有 2 个属性 日程数据 比赛日期 时间 地点 对手 和提交球队备注 例如 由于冬季风暴 1 月 7 日的比赛已移至1 月 9 日在 夏威夷 表单映射基于 ca
  • 使用值类参数的 Mockito 存根方法失败并出现 NullPointerException

    使用类型化值类作为 ID 是 Scala 中的常见模式 然而 在存根以值类作为参数的方法时 Mockito 似乎遇到了问题 在下面的示例中 第一个具有实际值的存根工作得很好 但第二个使用参数匹配器的存根会抛出 NullPointerExce
  • Spark sql 每组前 n 个

    我怎样才能获得每组的前n名 比如说前10名或前3名 spark sql http www xaprb com blog 2006 12 07 how to select the firstleastmax row per group in
  • 如何区分spark中的操作是转换还是动作?

    最近在学习spark 对transformation和action操作很困惑 我阅读了spark文档和一些关于spark的书籍 我知道action会导致spark作业在集群中执行 而transformation则不会 但是spark的api
  • 准备与大数据相关的设计和架构问题的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • scala 中“迭代 Seq 或如果为空”的更好版本?

    是否有更短 更好的方法来执行以下操作 mySeq map elmt gt do stuff if mySeq isEmpty some other stuff Ps 我正在使用 PlayFramework 这意味着在模板中使用 所以如果我错
  • 如何在 Scala 中跳过可选参数?

    给定以下带有可选参数的函数 def foo a Int 1 b Int 2 c Int 3 我想保留默认值a但将新值传递给b and c仅通过位置赋值 而不是通过命名赋值 即以下任何语法都可以 foo 5 7 foo 5 7 Scala 可
  • 使用 Scala 的解析器组合器时如何忽略不匹配的前面文本?

    我真的很喜欢解析器组合器 但是当我不关心相关文本之前的文本时 我对我提出的提取数据的解决方案并不满意 考虑这个小型解析器来获取货币金额 import scala util parsing combinator case class Amou
  • JavaScript 中 Scala View 的等效项

    在斯卡拉中 view允许防止创建全新的集合 例如在Scala中 视图 有什么作用 https stackoverflow com questions 6799648 in scala what does view do JavaScript
  • java.lang.RuntimeException:不支持的文字类型类org.joda.time.DateTime

    我在一个使用库的项目中工作 这对我来说非常新 尽管我在其他项目中使用它 没有任何问题 org joda time DateTime 所以我和Scala 并将项目作为作业运行数据块 scala版本 2 11 12 根据我到目前为止的调查 异常

随机推荐

  • 如何在 NestJS 中处理 RpcException

    我正在尝试构建一个包含多个微服务的 NestJS 后端和一个作为与微服务通信的网关的 REST API 对于网关和微服务之间的通信 我使用 gRPC 简单的通信已经可以工作 但现在我想在微服务中实现错误处理 NestJS 文档指出 这可以通
  • RecyclerView 查看项目

    我想在 RecyclerView 中显示 2 列 但它们显示在 1 列中 如下图所示 如何在两列中显示我的视图 我在我的代码中尝试了两列 rcv pro setLayoutManager new GridLayoutManager this
  • 如何在无需用户交互且仅通过客户端 ID 和密码的情况下验证我的 Quickbook Intuit api 访问?

    我正在开发一个项目 其中后台 crons 创建发票 我想将它们添加到我在后端创建的 Quickbook 帐户中 所以问题是我想仅使用客户端 ID 和秘密参与来访问 api 如何在无需用户交互且仅通过客户端 ID 和密码的情况下验证我的 Qu
  • 有没有办法在使用 ES6 简写方法表示法的方法中使用词法 `this` ?

    关于SO的第一个问题 我希望我没有重复任何内容 我看过other 问题并认为我的不同足以值得询问 基本上 有没有办法让this它位于使用速记符号编写的方法的方法主体中 或者是词法的 或者是绑定到特定值的 这样做的动机来自于我在实现时想要使用
  • 如何指定 JSON 对象应采用哪一个 oneOf 项?

    使用Python和jsonschema我正在尝试验证分配ObjA or ObjB等等beta test json alpha beta ObjA 在我的架构中 testschema json beta is oneOf多个项目 每个项目定义
  • Selenium-IDE:如何验证/断言页面刷新

    我的页面上有一个链接 单击该链接会刷新此页面 如何使用 Selenium IDE 验证页面是否确实已刷新 重新加载 我通过断言页面上最初存在的元素在刷新后不存在于页面上来解决这个问题 然后等到页面完全刷新 并断言该元素再次存在 刷新并等待
  • React router dom 中的链接不会加载页面,仅 url 浏览器导航会更改

    React router dom v5 和 React 16 我的加载应用程序组件包含 ReactDOM render
  • 如何通过 Android 应用程序编辑日历事件

    我如何通过 Android 应用程序编辑日历中的日历事件 任何人都知道如何在日历应用程序中打开议程活动 从日历中读取数据后 试试这个 将单次事件添加到日历 要将条目添加到特定日历 我们需要使用 ContentValues 配置要插入的日历条
  • unicodecsv 读取器从 unicode 字符串无法正常工作?

    我在将 unicode CSV 字符串读入 python unicodescv 时遇到问题 gt gt gt import unicodecsv StringIO gt gt gt f StringIO StringIO u gt gt g
  • 在sqlite3数据库中插入1000000行

    我想向数据库中插入 10 00 000 行 但是插入的时间太长了 例如现在我正在尝试 2055 行 需要 3 分钟才能将这些数据上传到数据库中 对于 2055 个条目来说 这个时间太多了 以下是我将数据插入数据库的方法 public voi
  • numpy var() 和 pandas var() 之间的区别

    最近遇到的一件事让我注意到numpy var and pandas DataFrame var or pandas Series var 给出不同的值 我想知道它们之间有什么区别吗 这是我的数据集 Country GDP Area Cont
  • 使用 Kafka Streams DSL 进行两步窗口聚合

    假设我有一个流 stream 1 每秒由 1 个数据点组成 我想计算一个派生流 stream 5 其中包含使用 5 秒的跳跃窗口和另一个流 stream 10 的总和它基于包含使用 10 秒跳跃窗口的总和的 stream 5 需要分别对每个
  • 在 Rails 4 中,Model.scoped 已被弃用,但 Model.all 无法替代它

    启动 轨道 4 Model scoped现已弃用 DEPRECATION WARNING Model scoped is deprecated Please use Model all instead 但是 有一个区别Model scope
  • 在表中添加和删除数据 - React

    我正在 React 中按表格制作一个简单的姓名和电子邮件列表 我想从服务器获取数据 然后动态添加或删除人员 这是我使用 React 的第一步 所以我遇到了一个问题 import React Component from react impo
  • Angular 2 - 获取日期

    我在模板中显示日期 p Datum p b data wageStatement date 这是它的渲染方式 2017 03 08T13 00 03 114Z 但我只想以这种格式显示日期 2017 03 08 Use DatePipe p
  • Java 泛型:通配符 与类型参数?

    我正在刷新有关 Java 泛型的知识 因此 我转向 Oracle 提供的优秀教程 并开始为我的同事准备一个演示文稿 我在中看到了有关通配符的部分tutorial说的是 考虑以下方法 printList public static void
  • MySQL错误150,无法创建表

    我在创建表格时遇到问题 我不明白出了什么问题 phpMyAdmin 在主键声明旁边设置错误指示器 我不明白为什么这是错误的 该表是一个子表 它与另一个表具有一对多的标识关系 CREATE TABLE IF NOT EXISTS ruilen
  • 您能解释一下 STA 和 MTA 吗?

    您能用自己的话解释一下STA和MTA吗 另外 什么是公寓线程 它们仅与 COM 相关吗 如果是这样 为什么 COM 线程模型称为 单元 模型 其中初始化的 COM 对象的执行上下文与单个线程 单线程单元 或多个线程 多线程单元 相关联 在此
  • 如何在 Fortran 中计算大整数?

    我需要生成一些大整数 请参见下面的示例 Input Result 40 165580141 80 37889062373143906 120 8670007398507948658051921 160 1983924214061919432
  • Spark 作业执行时间随着非常宽的数据集和列数呈指数增长[重复]

    这个问题已经存在了 我在 Spark 中创建了一个固定宽度的文件导入解析器 并对各种数据集执行了一些执行测试 它在最多 1000 列的情况下工作正常 但是 随着列数和固定宽度长度的增加 Spark 作业性能迅速下降 在20k列和固定宽度长度