2016-06-30 4 views
0

Ich habe diese Aussage:Mein Schwein Script leere Dateien in HDFS Erstellen

--Insert a new column based on filename 
Data = LOAD '/user/cloudera/Source_Data' using PigStorage('\t','-tagFile'); 

Data_Schema = FOREACH Data GENERATE 
(chararray)$1 AS Date, 
(chararray)$2 AS ID, 
(chararray)$3 AS Interval, 
(chararray)$4 AS Code, 
(chararray)$5 AS S_In, 
(chararray)$6 AS S_Out, 
(chararray)$7 AS C_In, 
(chararray)$8 AS C_Out, 
(chararray)$9 AS Traffic; 

--Split into different directories 
SPLIT Data_Schema INTO Src1 IF (Date == '2016-06-25.txt'), 
Src2 IF (Date == '2014-07-31.txt'), 
Src3 IF (Date == '2016-01-01.txt'); 

STORE Src1 INTO '/user/cloudera/Source_DatA/2016-06-25' using PigStorage('\t'); 
STORE Src2 INTO '/user/cloudera/Source_Data/2014-07-31.txt' using PigStorage('\t'); 
STORE Src2 INTO '/user/cloudera/Source_Data/2016-01-01' using PigStorage('\t'); 

Und es ist ein Beispiel für meine orignally Quelldaten:

10000 1388530800000 39 8.600870350350515 13.86183926855984 1.7218329193014124 3.424444103320796 25.972920214509095 

Aber wenn ich ausführen es läuft erfolgreich , aber die Dateien in HDFS sind ohne Daten ...

Beachten Sie, dass ich eine neue Spalte basierend auf Dateiname hinzufügen. Deshalb habe ich eine weitere Spalte in Foreach Statment haben ...

+0

Keine Ihrer geteilten Aussage wahr ist daher ist alles null – pratiklodha

+0

Mein Text Dateien haben diesen Namen, so dass meine erste Spalte (Datum) gleich ist Dateiname ... Ich weiß nicht, warum meine Split-Anweisung die Werte nicht erkennt –

Antwort

1

Wenn Ihre Eingabedateien namens 2016-06-25.txt, 2014-07-31.txt und 2016-01-01.txt dann die neu hinzugefügte Spalte von $0 referenziert werden, und es wird Dateinamen enthalten. Sie haben wie dies zu tun:

Data_Schema = FOREACH Data GENERATE 
(chararray)$0 AS Date, 
(chararray)$1 AS ID, 
... 

Oder einfach Schema angeben, während Dateien laden und den Rest zu halten, wie es ist:

Data = LOAD '/user/cloudera/Source_Data' using PigStorage('\t','-tagFile') as (Date:chararray, ID:chararray, ... ; 
+0

wusste nicht über diese Funktionalität. Danke für die Klarstellung. – syadav