如何忽略 Scala 中的"NullPointerException"并继续完成 MapReduce 任务的下一个作业?



我正在我的Ubuntu VM中运行Hadoop-MapReduce作业。在中间阶段,我需要检查 Hbase 数据库是否存在某些字符串数组,如果未找到,则不执行任何操作并"继续"到下一个作业,而不会抛出"NullPointerException"。

下面的 Scala 代码(版本 2.11.7(代码段检查之前从 MapReduce 作业创建的 Hbase 数据库中是否存在行(即字符串数组(。为此,它首先使用 .readColocationStoreRow(( 根据 rowName 输入读取 hbase 中的该行,然后如果存在拆分它,然后使用 .contains(( 检查该数组的某些部分(由分隔符 # 分隔(是否存在。整个作业以迭代方式运行。

问题是当 hbase 数据库中不存在这样的行(基于 rowName 输入(时,我得到 .split(( 的"NulPointerException",这是有道理的。我的问题是如何忽略这个"NulPointerException"并继续下一个工作?

这是一个简单的问题,但我是 Scala 的新手。

hBaseUtil
.readColocationStoreRow(rowName = rowName, size = k - 1)
.split(externalSeperator)
.contains(sortedInstance.mkString(internalSeprator))

如注释中所述,包装可能返回null的部分。

val row = Option(hBaseUtil.readColocationStoreRow(rowName = rowName, size = k - 1))
val rslt = row.map(_.split(externalSeperator)
.contains(sortedInstance.mkString(internalSeprator)))
.getOrElse(false)

最新更新