0
我有一个CSV文件及其列可以包含蜂巢表和加载数据 '' 大胆样品创建引用CSV
样品
23,“我们,是”,100
23,“你是,”是“,100”
要求加载到配置单元表(col1 int,col2 array,col3 int);
我有一个CSV文件及其列可以包含蜂巢表和加载数据 '' 大胆样品创建引用CSV
样品
23,“我们,是”,100
23,“你是,”是“,100”
要求加载到配置单元表(col1 int,col2 array,col3 int);
如果您的Hive版本是0.14及以上,您可以使用CSV Serde(https://cwiki.apache.org/confluence/display/Hive/CSV+Serde)。 DEFAULT_QUOTE_CHARACTER这个SERDE是“
如果你有以前的配置单元的版本,尝试添加该SERDE手动https://github.com/ogrodnek/csv-serde
的事情是SERDE将把您的数组作为一个字符串。这不是很大的问题,你可以转换柱到数组做时选择或创建为相同的附加视图
例:
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)
可否请您提供样品ddl表格和加载数据... –
完成。请参阅我的改进回答 – leftjoin
请注意,即使您将表创建为包含数组,但无论如何,serde会将其视为字符串。这将工作相同:CREATE EXTERNAL TABLE my_table(col1 int,col2 array,col3 int)... –
leftjoin