spark seq.max 报错 Caused by: java.lang.UnsupportedOperationException: empty.max


scala 在取seq.max,报错  Caused by: java.lang.UnsupportedOperationException: empty.max 

百度了很久,发现可能是因为同个迭代器只能使用一次,参考文档:http://blog.csdn.net/love666666shen/article/details/79202121

可以使用Iterator的 min 和 max 方法从迭代器中查找最大与最小元素。但好像同一个迭代器只能使用一次,以为Iterator的max和min方法是TraversableOnce(可遍历一次,遍历过一次之后迭代器就变为空的了)类型的,所以当第二次调用同样的方法,或第一次调用max方法第二次调用min方法时,第二次调用的方法会出现下面的错误

最后发现是 :

写的处理seq的方法中忽略了seq为空的情况,在udf调用该方法时就会报错。

!!!写udf的时候,必须考虑变量是否为空的情况!!!

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM