无法在配置单元中强制转换列

iqxoj9l9  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(307)

我使用serde将csv文件加载到配置单元表中。像往常一样,它将所有列类型都创建为string。但是,当我试图将列强制转换为它们各自的数据类型时,它会抛出一个错误,尤其是在将字符串类型转换为数组类型时。
描述表格ted;注解字符串来自反序列化程序描述字符串来自反序列化程序持续时间字符串来自反序列化程序说话人字符串来自反序列化程序占用字符串来自反序列化程序标记字符串来自反序列化程序视图字符串来自反序列化程序
创建表格tedx as选择cast(comments as int)as comments,cast(description as string)as desc,cast(duration as int)as duration,cast(speaker as string)as speaker,cast(occulation as string)as occulation,cast(tags as array)as tags,cast(views as int)as views,from ted;
失败:parseexception行7:13无法识别基元类型规范中“array”<“string”附近的输入
如何将标签列从字符串类型转换为数组类型?

e5njpo68

e5njpo681#

要将字符串转换为数组,请使用(string str,string pat)-围绕pat拆分str(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

相关问题