我在Spark中有下一个代码:
dsPhs.filter(filter(_))
.map(convert)
.coalesce(partitions)
.filter(additionalFilter.IsValid(_))
在转换函数中,我得到了更复杂的对象 - MyObject,所以我需要预先过滤基本对象。我有3个选择:
现在我选择选项3.但是可能更优选1或2?
答案 0 :(得分:1)
如果对于选项2,您的意思是转换返回一个空数组,还有另一个选项:转换返回Option[MyObject]
并使用flatMap
而不是map
。这有最好的选项1和2.在不了解您的用例的情况下,我无法确定这是否优于选项3,但这里有一些注意事项:
convert
是否应包含输入验证逻辑?如果是,请考虑修改它以返回Option
。
convert
或将在其他地方使用convert
,他们是否可以从此验证中受益?convert
当前所做的事情的好时机。filter
及其签名吗?如果没有,请考虑使用if
。