2015-03-29 18 views
6

मेरी सीएसवी फाइलों में पहली पंक्ति में शीर्षलेख है। उन्हें सुअर में लोड करना किसी भी बाद के कार्यों (जैसे एसयूएम) पर गड़बड़ पैदा करता है। आज के रूप में मैं पहली बार पंक्तियों हेडर युक्त दूर करने के लिए भरी हुई डेटा पर कोई फ़िल्टर लागू:हडोप पिग - सीएसवी हेडर को हटा रहा है

affaires = load 'affaires.csv' using PigStorage(',') as (NU_AFFA:chararray, date:chararray) ; 
affaires = filter affaires by date matches '../../..'; 

मुझे लगता है कि यह एक तरीके के रूप में थोड़ा बेवकूफ है, और मैं सोच रहा हूँ या तो वहाँ एक रास्ता सुअर बताने के लिए है लोड फ़ंक्शन में "as_header" बूलियन पैरामीटर की तरह, csv की पहली पंक्ति लोड न करें। मुझे इसे डॉक्टर पर नहीं दिख रहा है। सबसे अच्छा अभ्यास क्या होगा? आप आमतौर पर उस से कैसे निपटते हैं ??

उत्तर

11

CSVExcelStorage हेडर पंक्ति को छोड़ने के लिए लोडर समर्थन, इसलिए PigStorageCSVExcelStorage का उपयोग करें। piggybank.jar डाउनलोड करें और इस विकल्प को आजमाएं।

नमूना उदाहरण

input.csv

Name,Age,Location 
a,10,chennai 
b,20,banglore 

PigScript: (SKIP_INPUT_HEADER विकल्प के साथ)

REGISTER '/tmp/piggybank.jar'; 
A = LOAD 'input.csv' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER'); 
DUMP A; 

आउटपुट:

(a,10,chennai) 
(b,20,banglore) 

संदर्भ:
http://pig.apache.org/docs/r0.13.0/api/org/apache/pig/piggybank/storage/CSVExcelStorage.html

0

सुअर 0.9 के लिए एक और आसान विकल्प, SKIP_INPUT_HEADER विकल्प का उपयोग किए बिना इस प्रकार किया जा सकता है:

इनपुट फ़ाइल (input.txt)

input.txt

Name,Age,Location 
a,10,chennai 
b,20,banglore 

PigScript: (SKIP_INPUT_HEADER विकल्प का उपयोग, के रूप में इस विकल्प को सुअर 0.9 में उपलब्ध नहीं है बिना)

register '<Your location>/piggybank.jar'; 
d_with_headers = LOAD 'input.csv' using org.apache.pig.piggybank.storage.CSVExcelStorage() AS (name:chararray, age:long, location:chararray); 

d = FILTER places_with_headers BY name!='Name'; 

dump d; 

आउटपुट:

(a,10,chennai) 
(b,20,banglore) 
संबंधित मुद्दे