2017-08-03 55 views
5

Próbuję odczytać dane CSV z zasobnika s3 i utworzyć tabelę w AWS Atena. Stworzona przeze mnie tabela nie mogła pominąć informacji o nagłówku mojego pliku CSV.Jak pominąć nagłówki, gdy odczytujemy dane z pliku csv w s3 i tworzymy tabelę w aws athena.

Zapytanie Przykład:

CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( `event_type_id` 
    string, `customer_id` string, `date` string, `email` string) 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
    WITH 
    SERDEPROPERTIES ( "separatorChar" = "|", "quoteChar"  = "\"") 
    LOCATION 's3://location/' 
    TBLPROPERTIES ("skip.header.line.count"="1"); 

skip.header.line.count nie wydają się działać. Ale to nie działa. Myślę, że Aws ma z tym jakiś problem. Czy jest jakikolwiek inny sposób, który mógłbym przez to przejść?

Odpowiedz

1

To, co działa w przesunięciu ku czerwieni:

Chcesz użyć table properties ('skip.header.line.count'='1') wraz z innymi właściwościami, jeśli chcesz, na przykład 'numRows'='100'. Oto próbka:

create external table exreddb1.test_table 
(ID BIGINT 
,NAME VARCHAR 
) 
row format delimited 
fields terminated by ',' 
stored as textfile 
location 's3://mybucket/myfolder/' 
table properties ('numRows'='100', 'skip.header.line.count'='1'); 
+0

Oto dokumentacja AWS Redshift SQL na "Tworzenie tabeli zewnętrznej", http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html – TheWalkingData

1

Jest to znany niedobór.

Najlepszą metodą Widziałem był tweeted by Eric Hammond:

...WHERE date NOT LIKE '#%' 

Wydaje się pominąć wiersze nagłówka podczas kwerendy. Nie jestem pewien, jak to działa, ale może to być metoda na pomijanie NULL.