无法在蜂巢中投射列

时间:2018-04-04 12:05:44

标签: csv hadoop hive hive-serde

我使用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'附近的输入'<' '串'在原始类型规范

如何将标签列从字符串类型转换为数组类型?

1 个答案:

答案 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