錯誤寫法:
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))