[英]How do I deal with semicolon in a cell when the file I am uploading semicolon delimited?
[英]How can I ignore the semicolon ; in the & when I am creating a Hive table from a .csv file
繼續從這個問題開始, 我如何從.csv文件中創建一個Hive表,該文件具有一列,字段由分號代替;
我的csv文件中的某些標題/發布者帶有“&amp”; 它們和包含它們的行被誤讀,因為它們在與號代碼中以及每個字段的末尾在分號上過早地分裂了。
如何修改此代碼:
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)"
由於發布者列未被正確讀取。
我了解我可以先手動清除(&amp); 但是可以告訴我如何在Hive或Hadoop的其他工具中做到這一點嗎?
這篇文章討論了使用CSV和帶引號的字符串包含逗號時的類似問題和解決方案: http : //dev.bizo.com/2010/11/csv-and-hive.html
看起來可以將它們鏈接到的CSV-Serde配置為備用分隔符,因此它也應適用於您的格式。
你可以試試這個嗎?
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.