如何在 Scalding 中检查 TypedPipe 或 ValuePipe 是否为空?

How to check if a TypedPipe or a ValuePipe are empty in Scalding?

在 Scalding 中,假设您有 TypedPipe[Long]ValuePipe[Long]。您将如何以最 elegant/efficient 的方式检查它们是否为空?

目前正在测试以下内容:

val isTPEmpty: Boolean = typePipe.equals(TypedPipe.empty)
val isVPEmpty: Boolean = valuePipe.equals(EmptyValue)

或者,使其更通用:

def isTypedPipeEmpty[A](typedPipe: TypedPipe[A]): Boolean = {
  val emptyTP: TypedPipe[A] = TypedPipe.empty
  typedPipe.equals(emptyTP)
}

更新:这不起作用(将 return false 用于空 TypedPipe)。感谢任何输入。

和几个人谈过后,没有直接的解决方案,因为分发了一个TypedPipe,检查它是否为空是"expensive",所以应该尽可能避免这种情况。

如果你别无选择,对我有用的是 "ugly" 创建一个临时的空 TypedPipe,然后在我的 ValuePipe 上调用 mapWithValue,如果它是空的,则执行 X,否则做 Y。像这样:

TypedPipe.from(List()).mapWithValue(valuePipe) { case (temp, valuePipe) => if (valuePipe.isEmpty) doX else doY }

但又很麻烦。