hive取數組前n個作為新數組的語法和坑


錯誤寫法:
if(size(ip)>10, (ip[0],ip[1],ip[2],ip[3],ip[4],ip[5],ip[6],ip[7],ip[8],ip[9]), ip) as ip,
報錯顯示:
Cannot convert column from string to array.解決辦法
正確語法:
if(size(ip)>10, array(ip[0],ip[1],ip[2],ip[3],ip[4],ip[5],ip[6],ip[7],ip[8],ip[9]), ip) as ip,

坑:
參考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

如果取數組應該這樣只需要(ip[0],ip[1],ip[2],ip[3],ip[4],ip[5],ip[6],ip[7],ip[8],ip[9]) 這就是一個數組
但有個注意點需要加數組名 而且比較坑就是需要名字是array比較合理
所有如果你選擇寫if(size(ip)>10, (ip[0],ip[1],ip[2],ip[3],ip[4],ip[5],ip[6],ip[7],ip[8],ip[9]) as array, ip) as ip, 是錯誤的

正確小示范:
select if(size(array(1,2,3)>2),array(1,2), array(1,2,3))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM