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

时间:2015-08-17 13:54:37

标签: scalding

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

目前正在测试以下内容:

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)
}

更新:这不起作用(对于空false将返回TypedPipe)。感谢任何投入。

1 个答案:

答案 0 :(得分:1)

在与几个人谈到这个问题之后,没有直接的解决方案只是因为分配了TypedPipe,并且检查它是否为空是昂贵的,因此应该尽可能地避免这种情况。 / p>

如果你别无选择,那对我有用的东西就是"丑陋的"创建一个临时空的TypedPipe,然后在我的ValuePipe上调用mapWithValue,如果它是空的,则执行X,否则执行Y.类似于:

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

但又是,麻烦。