2016-03-26 14 views
0

Verwenden Sie diese Abfrage in Schwein, um Daten aus einer CSV-Datei mit 50000 Datensätze darin zu laden.CSV Laden großer Datenmengen in Pig

A = LOAD '/home/user/q2.csv' using org.apache.pig.piggybank.storage.CSVExcelStorage(',', 'YES_MULTILINE') as (Id:chararray, 
PostTypeId:chararray, 
AcceptedAnswerId:chararray, 
ParentId:chararray, 
CreationDate:chararray, 
DeletionDate:chararray, 
Score:chararray, 
ViewCount:chararray, 
Body:chararray, 
OwnerUserId:chararray, 
OwnerDisplayName:chararray, 
LastEditorUserId:chararray, 
LastEditorDisplayName:chararray, 
LastEditDate:chararray, 
LastActivityDate:chararray, 
Title:chararray, 
Tags:chararray, 
AnswerCount:chararray, 
CommentCount:chararray, 
FavoriteCount:chararray, 
ClosedDate:chararray, 
CommunityOwnedDate:chararray); 

Hier ist die Abfrage, um die Daten von \ n &, in dem Körperfeld und einige mehr zu reinigen.

Q2Clean = FOREACH Q2 GENERATE 
Id as Id, 
PostTypeId as PostTypeId, 
AcceptedAnswerId as AcceptedAnswerId, 
(chararray)REPLACE(ParentId,'"','') as ParentId, 
CreationDate as CreationDate, 
(chararray)REPLACE(DeletionDate,'"','') as DeletionDate, 
Score as Score, 
ViewCount as ViewCount, 
(chararray)REPLACE(REPLACE(Body,'\n',''),',','')as Body, 
OwnerUserId as OwnerUserId, 
(chararray)REPLACE(OwnerDisplayName,'"','') as OwnerDisplayName, 
LastEditorUserId as LastEditorUserId, 
(chararray)REPLACE(LastEditorDisplayName,'"','') as LastEditorDisplayName, 
LastEditDate as LastEditDate, 
LastActivityDate as LastActivityDate, 
(chararray)REPLACE(Title,',','') as Title, 
(chararray)REPLACE(Tags,',','') as Tags, 
AnswerCount as AnswerCount, 
CommentCount as CommentCount, 
FavoriteCount as FavoriteCount, 
(chararray)REPLACE(ClosedDate,'"','') as ClosedDate, 
(chararray)REPLACE(CommunityOwnedDate,'"','') as CommunityOwnedDate; 

Das Problem ist jetzt, wenn ich die Ausgabe speichern ihre 617.538 Zeilen geschrieben zeigt. Es hat zwei Dateien erstellt. Die erste Datei enthält 27000 Datensätze, die richtig formatiert sind, aber die zweite Datei wird nicht ordnungsgemäß gespeichert. Es enthält rund 610000 Zeilen und viele Zeilen mit nur, darin. So laden Sie die Daten ordnungsgemäß, sodass die Ausgabe 50000 anstelle von 617538 Zeilen anzeigt.

Here's the load status

Antwort

0

denke ich, das Problem mit dem folgenden Teil des Skripts ist.

(chararray)REPLACE(REPLACE(Body,'\n',''),',','')as Body, 

Sie haben eine andere Backslash hinzufügen zu ersetzen ‚\ n‘

(chararray)REPLACE(REPLACE(Body,'\\n',''),',','')as Body, 
+0

ich mit einem anderen Backslash müde \ n zu ersetzen, aber es ist immer noch die gleiche Anzahl von Datensätzen zeigt. – user6118910

+0

@ user6118910 Können Sie Beispieldaten hochladen? –

Verwandte Themen