簡體   English   中英

我如何忽略分號; 在&中,當我從.csv文件創建Hive表時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM