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