2016-03-26 9 views
0

Bu sorguyu, 50000 kayıt içeren bir CSV dosyasından veri yüklemek için domuzda kullanıyorum. İşte CSV'ye büyük miktarda veri yükleme 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); 

vücut alanına ve birkaç içinde, \ n & verilerini temizlemek için sorgusu olur. i onun yazılı 617.538 satır gösteren çıktısını depolamak zaman

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; 

hemen bir sorundur. İki dosya oluşturdu. İlk dosya düzgün biçimlendirilmiş ancak ikinci dosya düzgün şekilde saklanmayan 27000 kayıtlara sahiptir. İçinde yaklaşık 610000 satır ve birçok satır bulunur. Verileri düzgün şekilde yüklemek için, çıktı 617538 satır yerine 50000 gösterir.

Here's the load status

cevap

0

Sorun senaryonuzun aşağıda bölümüyle olduğunu düşünüyorum.

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

Sen yerine '\ n'

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

Başka ters eğik çizgi ile yorgun \ n ama hala onun kayıtların aynı sayıda gösteren yerine başka ters eğik çizgi eklemeniz gerekir. – user6118910

+0

@ user6118910 Örnek veri gönderebilir misiniz? –