2014-12-23 37 views
2

創建一個蜂巢表在延續,從這個問題How can I make a Hive table from a .csv file which has one column with fields delimiited by semicolon ;如何忽略分號;在&當我從.csv文件

一些標題/在我的csv文件出版商有「&放大器」;在他們和包含他們的行被誤讀,因爲他們過早地分裂在和號碼和每個字段的末尾分號。

我怎麼能修改此代碼:

CREATE TABLE books (ISBN STRING, Title STRING, Author STRING, Year STRING, Publisher STRING) 
    ROW FORMAT DELIMITED FIELDS TERMINATED BY "\;"; 
LOAD DATA INPATH '/path/to/my/datafile' INTO TABLE books; 

所以它不這樣做呢?在我的csv文件

一個例子問題行是:

0743403843;"Decipher";"Stel Pavlou";"2002";"Simon & Schuster (Trade Division)" 

有了不被讀取正確的出版商列。

據我所知,我可以先手動取出csv,然後取下(& amp)。但可以告訴我如何在Hive或Hadoop的其他工具中執行此操作?

+0

我有不同的方法,因爲這是它確定有&也在發佈列輸出(或)它的強制去除從發佈列&? –

+0

如果&位於標題欄中,那麼標題中的標題的下一部分位於作者列中,實際作者位於年份column.etc中。它會在分號和分號&中分號而不是分號,它們表示字段的結尾。 –

+0

我得到了你的問題,這個輸出對於上面的輸入是可以的嗎? isbn = 0743403843,title =「Decipher」,author =「Stel Pavlou」,year =「2002」,publisher =「Simon & Schuster(Trade Division)」? –

回答

0

你可以試試嗎?

hive> CREATE TABLE test_regex(
    >  isbn STRING, 
    >  title STRING, 
    >  author STRING, 
    >  year STRING, 
    >  publisher STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
    >  WITH SERDEPROPERTIES ("input.regex" = 
    >  "(.*)\;\"(.*)\"\;\"(.*)\"\;\"(.*)\"\;\"(.*)\"", 
    >  "output.format.string" = "%1$s %2$s %3$s %4$s %5s") 
    >  STORED AS TEXTFILE; 
OK 
Time taken: 4.139 seconds 

hive> load data local inpath 'input.csv' overwrite into table test_regex; 
OK 
Time taken: 0.393 seconds 


hive> select isbn,publisher from test_regex; 
ISBN Publisher 
0002005018 HarperFlamingo Canada 
0399135782 Putnam Pub Group 
0743403843 Simon & Schuster (Trade Division) 
Time taken: 4.522 seconds 

hive> select *from test_regex; 
OK 
ISBN Title Author Year Publisher 
0002005018 Clara Callan Richard Bruce Wright 2001 HarperFlamingo Canada 
0399135782 The Kitchen God's Wife Amy Tan 1991 Putnam Pub Group 
0743403843 Decipher Stel Pavlou 2002 Simon & Schuster (Trade Division) 
Time taken: 0.253 seconds 
0

本貼討論了類似的問題和解決方案使用CSV和引用字符串包含逗號時:http://dev.bizo.com/2010/11/csv-and-hive.html

它看起來像CSV-SERDE它們鏈接到可配置一個備用分離器,所以它應該爲你的工作格式。

+0

我會試試。 –

相關問題