Mam plik sekwencyjny, który jest wynikiem działania mapy miaoop-zmniejsz. W tym pliku dane są zapisywane w parach wartości klucza, a sama wartość jest mapą. Chcę odczytać wartość jako obiekt MAP, aby móc go przetworzyć dalej.Jak odczytać sekwencyjny plik hadoop?
Configuration config = new Configuration();
Path path = new Path("D:\\OSP\\sample_data\\data\\part-00000");
SequenceFile.Reader reader = new SequenceFile.Reader(FileSystem.get(config), path, config);
WritableComparable key = (WritableComparable) reader.getKeyClass().newInstance();
Writable value = (Writable) reader.getValueClass().newInstance();
long position = reader.getPosition();
while(reader.next(key,value))
{
System.out.println("Key is: "+textKey +" value is: "+val+"\n");
}
wyjście z programu: Key jest: [to jest klucz] wartość: {abc = 839177, xyz = 548498, LMN = 2, pqr = 1} wartość
Tutaj otrzymuję jako ciąg , ale chcę go jako obiekt mapy.
Skąd pochodzi "val"? A mapa nie jest "Writable", czego używasz do zajęć w swojej pracy m/r? –
Po prostu mam plik sekwencyjny i nie jestem świadomy tego, co robią w pracy zmniejszania mapy.I dostaję następujące informacje. "Każdy taki plik musi być otwarty jako plik sekwencji.Kodowany kodek dekompresyjny musi być użyty - klasa plików sekwencji wydaje się być w stanie powiedzieć, jakiego kodeka kompresji użyć, a następnie myślę, że każdy klucz i każda wartość jest zakodowana za pomocą TypedBytes. " – samarth
Następnie musisz uzyskać klasy klucza i wartości, w przeciwnym razie nie będziesz ich poprawnie deserializować. –