zoukankan      html  css  js  c++  java
  • 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))

  • 相关阅读:
    iOS加载动态图的两种方法
    python初探
    博客园封笔
    office的分栏技巧
    关于排序...
    LaTex 学习笔记
    vim 学习笔记
    iOS 编程学习笔记之Foundation框架
    数论
    扫描线概览
  • 原文地址:https://www.cnblogs.com/Mang0/p/14486034.html
Copyright © 2011-2022 走看看