2016-08-06 30 views
0

Im Folgenden ist ein Beispiel-Dataset durch doppelten Doppelpunkt (: :) begrenzt.Laden der Datei durch doppelten Doppelpunkt :: in Schwein

1::Toy Story (1995)::Animation|Children's|Comedy  

Ich möchte drei Felder aus obigem Datensatz als movieID, Titel und Genre extrahieren. Ich habe für diesen

folgenden Code geschrieben
movies = LOAD 'location/of/dataset/on/hdfs ' 
using PigStorage('::') 
as 
(MovieID:int,title:chararray,genre:chararray); 

Aber ich bin immer folgende Fehler

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Pig script failed to parse: 
<file script.pig, line 1, column 9> pig script failed to validate: 
java.lang.RuntimeException: could not instantiate 'PigStorage' with arguments '[::]' 
+0

Die Gemeinde [vor kurzem diskutiert so schnell wie möglich betteln] (http: // Meta. stackoverflow.com/q/326569/472495) und ist fest damit einverstanden, dass es nicht annehmbar ist. Bitte füge das nicht in deine Fragen ein. – halfer

+0

Wenn Sie Daten mit PigStorage laden, wird nur ein einzelnes Zeichen als Trennzeichen erwartet. – Bector

Antwort

3

Verwendung MyRegExloader: Sie werden piggybank.jar dafür brauchen.

REGISTER '/path/to/piggybank.jar' 
A = LOAD '/path/to/dataset' USING org.apache.pig.piggybank.storage.MyRegExLoader('([^\\:]+)::([^\\:]+)::([^\\:]+)') 
     as (movieid:int, title:chararray, genre:chararray); 

Ausgang:

(1, Toy Story (1995), Zeichentrick | Kinder | Komödie)