Apache Spark:处理 RDD 中的 Option/Some/None

2023-12-28

我正在映射一张 HBase 表,为每个 HBase 行生成一个 RDD 元素。然而,有时该行有坏数据(在解析代码中抛出 NullPointerException),在这种情况下我只想跳过它。

我的初始映射器返回一个Option指示它返回 0 或 1 个元素,然后过滤Some,然后获取包含的值:

// myRDD is RDD[(ImmutableBytesWritable, Result)]
val output = myRDD.
  map( tuple => getData(tuple._2) ).
  filter( {case Some(y) => true; case None => false} ).
  map( _.get ).
  // ... more RDD operations with the good data

def getData(r: Result) = {
  val key = r.getRow
  var id = "(unk)"
  var x = -1L

  try {
    id = Bytes.toString(key, 0, 11)
    x = Long.MaxValue - Bytes.toLong(key, 11)
    // ... more code that might throw exceptions

    Some( ( id, ( List(x),
          // more stuff ...
        ) ) )
  } catch {
    case e: NullPointerException => {
      logWarning("Skipping id=" + id + ", x=" + x + "; \n" + e)
      None
    }
  }
}

有没有更惯用的更短的方法?我觉得这看起来很混乱,无论是getData()并在map.filter.map我正在做的舞蹈。

也许是一个flatMap可以工作(在 a 中生成 0 或 1 个项目Seq),但我不希望它展平我在映射函数中创建的元组,只需消除空值即可。


另一种经常被忽视的方法是使用collect(PartialFunction pf),这意味着“选择”或“收集”RDD 中在偏函数中定义的特定元素。

代码如下所示:

val output = myRDD.collect{case Success(tuple) => tuple }

def getData(r: Result):Try[(String, List[X])] = Try {
        val id = Bytes.toString(key, 0, 11)
        val x = Long.MaxValue - Bytes.toLong(key, 11)
        (id, List(x))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Spark:处理 RDD 中的 Option/Some/None 的相关文章

  • 具有定期更新的静态数据集的结构化流

    将流媒体与静态数据集合并是结构化流媒体的一个重要功能 但在每个批次中 数据集都会从数据源刷新 由于这些源并不总是那么动态 因此在指定的时间段 或批次数 内缓存静态数据集会提高性能 在指定的时间段 批次数之后 将从源重新加载数据集 否则从缓存
  • 在 catch 块中重新抛出异常是否有意义?

    从 catch 块中抛出异常只是为了记录消息以便我们确定导致异常的原因是否有意义 Code public void saveLogs Logs logs throws RemoteException try LogsOps saveLogs
  • 什么时候有2.13的sbt版本?

    我想开发一个sbt插件其依赖项仅适用于斯卡拉2 13 我发现https github com sbt sbt issues 5032 https github com sbt sbt issues 5032这个列表 SBT 0 x 仅在 S
  • 抛出 UnsupportedOperationException

    因此其中一种方法的描述如下 public BasicLinkedList addToFront T data 该操作无效 对于排序列表 将生成 UnsupportedOperationException 使用消息 排序列表的操作无效 我的代
  • Python 中的“finally”总是执行吗?

    对于Python中任何可能的try finally块 是否保证finally块总是会被执行吗 例如 假设我在except block try 1 0 except ZeroDivisionError return finally print
  • 如何在Python的Try/Catch块中捕获所有异常?

    我正在编写 python 代码来在 linux 环境中安装我的程序所需的所有库包 因此 linux 可能包含 python 2 7 或 2 6 或两者都包含 所以我开发了一个 try and except 块代码 将在 linux 中安装
  • 在 ASP.NET 中优雅地处理 URI 黑客攻击

    我编写了一个应用程序 可以优雅地处理大多数异常 页面设计完好无损 并且有一条漂亮的错误消息 我的应用程序将它们全部捕获在Page Error事件并添加了例外HttpContext Curent Context Items然后做了一个Serv
  • SBT - 使用汇编时多项目合并策略和构建 sbt 结构

    我有一个由多个较小项目组成的项目 其中一些项目相互依赖 例如 有一个依赖于 commons 项目的实用程序项目 其他项目可能依赖于公用事业或公共设施 也可能不依赖于两者 在 build sbt 中 我在文件末尾有程序集合并策略 以及程序集中
  • S3A:失败,而 S3:在 Spark EMR 中工作

    我将 EMR 5 5 0 与 Spark 结合使用 如果我使用一个简单的文件写入 s3s3 网址写得很好 但如果我使用s3a 地址 它失败了Service Amazon S3 Status Code 403 Error Code Acces
  • 带有泛型参数的抽象类的 JsonFormat

    我正在尝试为具有通用参数的抽象类编写 JsonFormat 如下所示 abstract class Animal A def data A def otherStuff String stuff case class CatData cat
  • 单击“发送”按钮事件时,我们可以在哪里获取 xml/元数据格式的表单数据?

    我是一个新的 scala 学习者 作为要求的一部分 我需要将表单数据插入 activemq 队列中以进行提交事件 我尝试调试发送方法代码 以了解单击 FormRunnerActions scala 类中的发送按钮时我们到底在哪里获取 xml
  • 最大模式长度 fpgrowth apache Spark

    我正在尝试使用 Spark Scala 运行关联规则 我首先创建一个 FPGrowth 树并将其传递给关联规则方法 但是 我希望添加最大模式长度参数 以限制我想要在左侧和右侧的项目数量 我只想要项目之间的一对一关联 val model ne
  • 两次捕获相同的异常

    我有以下内容 public void method try methodThrowingIllegalArgumentException return catch IllegalArgumentException e anotherMeth
  • 关于pl/sql异常的问题

    以下文字摘录自oracle文档Oracle Database PL SQL 语言参考 11g 第 1 版 11 1 未处理的异常也会影响 子程序 如果退出子程序 成功后 PL SQL 将值分配给 输出参数 但是 如果您退出 带有未处理的异常
  • 指定 Parquet 属性 pyspark

    如何在 PySpark 中指定 Parquet 块大小和页面大小 我到处搜索 但找不到任何有关函数调用或导入库的文档 根据火花用户档案 https mail archives apache org mod mbox spark user 2
  • PostgreSQL 自定义异常条件

    当我提出异常时是否可以创建自定义条件 考虑以下示例 BEGIN y x 0 EXCEPTION WHEN division by zero THEN RAISE NOTICE caught division by zero RETURN x
  • 为什么这个 Clojure 程序在可变数组上运行如此慢?

    剧透警告 这是 代码降临 第六天的第一部分 我试图解决this http adventofcode com day 6Clojure 和 Scala 中的问题 Scala 程序在我的 Macbook Air 上运行良好 几秒钟内就完成了 然
  • 从 Spark 数据帧中过滤大量 ID

    我有一个大型数据框 其格式类似于 ID Cat date 12 A 201602 14 B 201601 19 A 201608 12 F 201605 11 G 201603 我需要根据大约 500 万个 Is 的列表来过滤行 最直接的方
  • Scala 宏 - 使用“c.prefix”推断隐式值

    c inferImplicitValue推断调用站点范围中的隐式值 是否可以使用推断隐式c prefix scope 这不是有效的代码 但表达了我需要的内容 c prefix inferImplicitValue 我目前正在使用一个简单的实
  • 在 Scala 中使用隐式的良好实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何客观原因在代码中到处使用隐式参数只是为了缩短应传递的参数数量 我有一个 REST API 端点的每个调用都有一个唯一的 ID 应该在调

随机推荐

  • 在 Canvas WPF 上绘制一条线后在 A 点和 B 点上显示文本框

    在我的项目中 我使用此代码在画布上绘制线条 List
  • 在react jsx中显示html标记

    想要在我的模板中直接显示 html 标记 这是我正在编写要显示的 html 代码的文件 我想显示所有的 html 元素 import React from react const html div ul li 1 li li 2 li li
  • (a*+b*) 生成的字符串是什么类型

    除了任意数量的 a 和 b 的字符串 如 aa 或 bb 之外 正则表达式 a b 是否会包含类似的字符串 ab 或任何以 b 结尾的字符串 a b 与 a b 相同吗 我对正则表达式 a b 生成的字符串有点困惑 如果有人可以提供帮助 我
  • 处理程序与线程

    我想知道一次 我读过很多地方 当我想做一些 长时间操作 时 我应该使用Handler 但我不明白为什么 我所有的 长时间操作 都用常规线程包围 并且工作正常 我为什么要使用Handler为了这 我唯一需要使用的时间Handler是 当我必须
  • 非静态数据成员类推导

    我正在尝试解决类型推导问题 这是演示代码 使用函数重载来定义传递的变量是 int 还是 double std string tcast const double x return Floating Point std string tcas
  • 单击按钮时显示/隐藏元素

    我有两个按钮 显示 和 隐藏 我有一个图像 所以我想知道当我单击 隐藏 按钮时 该图像会消失 当我单击 显示 按钮时 它会再次出现 我不想只使用 CSS 或 JQUERY Javascript 来完成此操作 如果有人可以提供帮助 非常感谢
  • Thrift HBase 客户端 - 支持过滤器和协处理器

    遗憾的是 我的 hbase 客户端语言是 Python 我现在使用 happybase 它基于 thrift AFAIK 我知道到目前为止 thrift 仍然不支持过滤器 协处理器 如果我错了 请纠正我 有人可以给我指出任何可以跟踪计划 进
  • 算法选择建议

    我必须做一个项目 尝试扫描车辆的形状并检测它是什么类型的车辆 扫描将使用称为 车辆扫描仪 的传感器进行 它们只有 50 束光 每束都有接收器和发射器如图所示 我从传感器获得每个光束的原始状态 阻挡或解锁 通过连续扫描 我们可以创建可能非常低
  • VIM textwidth 没有效果

    这感觉像是一个愚蠢的问题 但我在互联网上 或在 VIM 帮助中 找不到答案 我在 Mac OS X 上使用 VIM 7 2 我想做的就是将行换行为 72 个字符 但是这样做 set textwidth 72 没有影响 文本宽度设置正确 我可
  • 使用 MySQL Fulltext(或 sphinx?)进行模糊街道地址搜索[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个数据库表 其中包含来自 Google 地图地理编码响应的地址 Google 缩写了所有方向 西 gt W 东 gt E 等 因
  • AngularJS - 有条件地应用属性?

    有条件地应用一个元素很容易 只需使用 ng show 即可 但是属性呢 IE div div 需要仅对管理员进行排序 因此请执行以下操作 div div 创建自定义指令或模板 并在附加可排序的版本和不附加可排序的版本之间切换
  • IIS 7.5 / WCF - net.tcp 状态未知

    我正在尝试让我的 WCF 服务与netTcpBinding代替wsHttpBinding 但我似乎无法让它工作 我添加了net tcp绑定到 IIS7 5 但状态为未知 当我还删除 http 绑定时 它会在网站上放置一个大红色 X 我必须添
  • Jetpack Compose:对角分割卡片并将内容放入其中

    我试图实现这样的目标 其中 A 是图像 B 也是图像 目前 这是我能做的最好的事情 Card modifier Modifier fillMaxWidth constrainAs image top linkTo parent top st
  • 如何写入管道叉?

    我有以下通过 fork 和 execvp 执行命令的函数 我在 fork 中启动的脚本正在监听输入数据 我如何将数据发送到 myscript int external command int pfds 2 if pipe pfds lt 0
  • 向客户端广播数据包在java中不起作用

    我有多个发射器 配置为当它们收到从服务器通过本地端口 5255 远程端口 5252 发送的广播数据包时发回响应 其中包含字符串 AST show me 0 如发射器手册中所述 这应该可以帮助我扫描本地网络内的所有发射器 我已经实现了一个服务
  • 使用 LINQ to XML 生成动态 sitemap.xml 时如何正确生成 xsi:schemalocation 属性?

    我正在生成动态 sitemap xml 根据站点地图 org http www sitemaps org protocol php这是 sitemap xml 的标头
  • Excel VBA 中的公共与私有/暗淡

    我可以使用一些帮助来理解在 Excel 2013 VBA 的模块中使用 Public 与 Dim 首先 我想说我确实找到了这篇很棒的文章 它具有出色的定义 请参阅下面的链接 但没有示例 我可以使用一些示例来说明如何将公共变量应用到我的项目中
  • 矢量分段故障的矢量

    当我尝试为这个向量向量赋值时 我不断遇到分段错误 我基本上是从图像中读取像素 然后尝试创建一个向量向量 您可以访问该行 然后访问该行上的像素以获取该点的像素 但是当我尝试将特定像素分配给像素值时 它会给我一个分割错误 我使用占位符 255
  • 如何将一个Makefile中的两个不同的源目录输出到一个bin目录?

    我有以下 Makefile 来构建我的 erlang 项目 SUFFIXES erl beam yrl ERL SRC wildcard src erl ERL OBJ patsubst src erl ebin beam ERL SRC
  • Apache Spark:处理 RDD 中的 Option/Some/None

    我正在映射一张 HBase 表 为每个 HBase 行生成一个 RDD 元素 然而 有时该行有坏数据 在解析代码中抛出 NullPointerException 在这种情况下我只想跳过它 我的初始映射器返回一个Option指示它返回 0 或