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