DROP TABLE my_table;
CREATE EXTERNAL TABLE my_table(col1 int , col2 string, col3 int)
row format SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
stored as textfile;
我创建了文本文件并将其放在表位置。 文件内容:
23,"we,are",100
23,"you,are",100
现在,获取数据:
hive> select col1, split(col2,",") as col2, col3 from my_table;
OK
23 ["we","are"] 100
23 ["you","are"] 100
或者,可以创建视图:
hive> create view my_table_view as select col1, split(col2,",") as col2, col3 from my_table;
OK
Time taken: 0.427 seconds
hive> select * from my_table_view;
OK
23 ["we","are"] 100
23 ["you","are"] 100
Time taken: 0.369 seconds, Fetched: 2 row(s)
--选择数组元素:
hive> select col1,col2[0] as col2_1, col2[1] as col2_2, col3 from my_table_view;
OK
23 we are 100
23 you are 100
Time taken: 0.09 seconds, Fetched: 2 row(s)
1条答案
按热度按时间k10s72fa1#
如果您的配置单元版本为0.14或更高版本,则可以使用csv serde(https://cwiki.apache.org/confluence/display/hive/csv+serde). 此序列的默认\u引号\u字符为“
如果您有以前的配置单元版本,请尝试手动添加此serdehttps://github.com/ogrodnek/csv-serde
问题是serde会把你的数组当作一个字符串。这不是什么大问题,您可以在执行select时将列转换为数组,或者为同一列创建其他视图。
例子:
我创建了文本文件并将其放在表位置。
文件内容:
现在,获取数据:
或者,可以创建视图:
--选择数组元素: