2016-11-06 4 views
0

Dump seit einem sehr langen Problem stecken. Jede Hilfe wäre spürbar. Also habe ich eine Datei im Verzeichnis/home/hadoop/pig. Ich kann diese Datei sehen, also kein Berechtigungsproblem. Der Datensatz hat 4 Spalten, die durch "::" als Trennzeichen getrennt sind. Ich laufe Schwein im lokalen Modus von innen/home/hadoop/Schwein Verzeichnis.Konnte keine Beziehung in PIG

ratingsData = LOAD 'ratings.dat' AS (line:chararray); 

ratings = FOREACH ratingsData GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*?)::(.*?)::(.*?)::(.*?)')) AS (uid:int, mid:int, rating:int, timestamp:long); 

grouped_mid = GROUP ratings BY mid; 

dump grouped_mid; 

Das obige Skript schlägt fehl. Ich kann erfolgreich 'ratingsData' und 'ratings' Relationen löschen, aber nicht die grouped_mid. Aber hier ist der bizarre Teil. Das folgende Skript wird erfolgreich ausgeführt.

ratingsData = LOAD 'ratings.dat' AS (line:chararray); 

ratings = FOREACH ratingsData GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*?)::(.*?)::(.*?)::(.*?)')) AS (uid:int, mid:int, rating:int, timestamp:long); 

STORE ratings INTO 'ratingInfo.txt'; 

X = LOAD 'ratingInfo.txt' AS (uid:int, mid:int, rating:int, timestamp:long); 

grouped_mid = GROUP X BY mid; 

dump grouped_mid; 

Offensichtlich hat das zweite Skript einen redundanten Schritt. Ich speichere einfach eine Relation und lade sie erneut hoch. Ich möchte das vermeiden. Jede Klärung/Erklärung wäre sehr bemerkenswert.

Vielen Dank.

+0

Ich habe dies auf einem Mikro (4-reihige) Probe des gleichen Datensatzes versucht. Ich änderte manuell "::" in ein Komma in VI und lud es in eine Beziehung mit PigStorage, .ie., Nicht mit REGEX_EXTRACT_ALL. Es läuft gut, und ich bin in der Lage, Grouped_mid zu entleeren. –

Antwort