我使用serde将csv文件加载到hive表中。像往常一样,它创建了所有columntypes作为字符串。但是当我试图将列转换为它们各自的数据类型时,它会抛出一个错误,特别是在将字符串类型转换为数组类型时。
描述表ted; 来自反序列化器的注释字符串 来自反序列化器的描述字符串 来自反序列化器的持续时间字符串 来自反序列化器的扬声器字符串 来自解串器的占用字符串 标记来自反序列化程序的字符串 查看来自反序列化程序的字符串
创建表tedx作为select cast(注释为int)作为注释,cast(描述为字符串)as des,cast(duration as int)作为duration,cast(speaker as string)作为speaker,cast(占用为字符串) as occup,cast(标签为数组)作为标签,cast(视图为int)作为视图,来自ted;
失败:ParseException行7:13无法识别' array'附近的输入'<' '串'在原始类型规范
如何将标签列从字符串类型转换为数组类型?
答案 0 :(得分:0)
将字符串转换为数组使用(字符串str,字符串pat) - Splits str around pat(pat是正则表达式)。
演示:
hive> select split('1,2,3',',');
OK
["1","2","3"]
Time taken: 4.691 seconds, Fetched: 1 row(s)
文档在这里:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF