如何在 Scala 中忽略 "NullPointerException" 并继续完成 MapReduce 任务的下一个工作?
How to ignore "NullPointerException" in Scala and continue to finish next job for a MapReduce task?
我 运行 在我的 Ubuntu 虚拟机中执行 Hadoop-MapReduce 作业。在中间阶段,我需要检查 Hbase 数据库是否存在某个字符串数组,如果没有找到则什么也不做,"continue" 到下一个作业,而不抛出 "NullPointerException"。
下面的 Scala 代码(版本 2.11.7)片段检查 Hbase 数据库中是否存在先前从 MapReduce 作业创建的行(即字符串数组)。为此,它首先使用 .readColocationStoreRow() 根据 rowName 输入读取 hbase 中的该行,然后如果存在则将其拆分,然后使用 .contains() 检查该数组的部分是否(由分隔符 # 分隔)存在于那里。整个工作是 运行 迭代。
问题是当 hbase 数据库中不存在这样的行(基于 rowName 输入)时,我得到 "NulPointerException" for .split(),这是有道理的。我的问题是如何忽略这个 "NulPointerException" 并继续下一个工作?
这是一个简单的问题,但我是 Scala 的新手。
hBaseUtil
.readColocationStoreRow(rowName = rowName, size = k - 1)
.split(externalSeperator)
.contains(sortedInstance.mkString(internalSeprator))
如评论中所述,包装可能 return null
.
的部分
val row = Option(hBaseUtil.readColocationStoreRow(rowName = rowName, size = k - 1))
val rslt = row.map(_.split(externalSeperator)
.contains(sortedInstance.mkString(internalSeprator)))
.getOrElse(false)
我 运行 在我的 Ubuntu 虚拟机中执行 Hadoop-MapReduce 作业。在中间阶段,我需要检查 Hbase 数据库是否存在某个字符串数组,如果没有找到则什么也不做,"continue" 到下一个作业,而不抛出 "NullPointerException"。
下面的 Scala 代码(版本 2.11.7)片段检查 Hbase 数据库中是否存在先前从 MapReduce 作业创建的行(即字符串数组)。为此,它首先使用 .readColocationStoreRow() 根据 rowName 输入读取 hbase 中的该行,然后如果存在则将其拆分,然后使用 .contains() 检查该数组的部分是否(由分隔符 # 分隔)存在于那里。整个工作是 运行 迭代。
问题是当 hbase 数据库中不存在这样的行(基于 rowName 输入)时,我得到 "NulPointerException" for .split(),这是有道理的。我的问题是如何忽略这个 "NulPointerException" 并继续下一个工作?
这是一个简单的问题,但我是 Scala 的新手。
hBaseUtil
.readColocationStoreRow(rowName = rowName, size = k - 1)
.split(externalSeperator)
.contains(sortedInstance.mkString(internalSeprator))
如评论中所述,包装可能 return null
.
val row = Option(hBaseUtil.readColocationStoreRow(rowName = rowName, size = k - 1))
val rslt = row.map(_.split(externalSeperator)
.contains(sortedInstance.mkString(internalSeprator)))
.getOrElse(false)