2016-06-26 15 views
0

Meine Eingangsdaten zu verstehen, ist wie folgt:Partition nicht in der Lage

1,srinivas,courtthomas,memphis 
2,vindhya,courtthomas,memphis 
3,srinivas,courtthomas,kolkata 
4,vindhya,courtthomas,memphis 

Und ich habe die folgenden Abfragen erstellt:

create EXTERNAL table seesaw (id int,name string,location string) partitioned by (address string) row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile LOCATION '/seesaw'; 

LOAD DATA INPATH '/sampledoc' OVERWRITE INTO TABLE seesaw PARTITION (address = 'Memphis'); 

wenn ich versuche, meine Anfrage zu holen es darum geht, wie folgt:

Select * from seesaw;                  
OK 
1 srinivas courtthomas Memphis 
2 vindhya courtthomas Memphis 
3 srinivas courtthomas Memphis 
4 vindhya courtthomas Memphis 

Ich verstehe wirklich nicht, wie alle Reihen Memphis am Ende gezeigt haben.

Antwort

0

Lesen Sie den Code genau:

create EXTERNAL table seesaw (id int,name string,location string) 

Beachten Sie, dass es nur drei Spalten, id, name und location. jedoch

Ihre Daten,

1,srinivas,courtthomas,memphis 
2,vindhya,courtthomas,memphis 
3,srinivas,courtthomas,kolkata 
4,vindhya,courtthomas,memphis 

hat vier Säulen. Etwas ist hier fischig.

LOAD DATA INPATH '/sampledoc' 
    OVERWRITE INTO TABLE seesaw 
    PARTITION (address = 'Memphis'); 

Sie fragen, um eine Kategorie zu partitionieren, die nur courtthomas von Memphis enthält. Das Ergebnis ist zu wenig Überraschung, was Sie nicht wollen.

+0

Daten in das Dateisystem geschrieben wird serialisiert als Text mit getrennten Spalten von^A und Zeilen, die durch Zeilenumbrüche getrennt sind, kannst du mir bitte sagen, was das bedeutet? Ich habe es im Bienenstock-Handbuch gefunden. besonders was bedeutet^A? – sri

0

Wenn Sie eine externe Tabelle verwenden, müssen Sie manuell Ordner für jede Partition erstellen, dh in Ihrem Fall - erstellen Sie zwei Ordner [Adresse = Memphis] und [Adresse = Kolkata] und kopieren Sie die entsprechenden Eingabedateien unter entsprechende Ordner und dann die Partitionen Metadaten hinzufügen wie folgt:

ALTER TABLE seesaw ADD PARTITION(address='Memphis'); 
ALTER TABLE seesaw ADD PARTITION(address='kolkata'); 

siehe diesen Artikel für ein einfaches Beispiel dafür, wie dies zu tun - hive-external-table-with-partitions