Tôi có một tệp tuần tự là đầu ra của công việc giảm bản đồ hadoop. Trong dữ liệu tệp này được viết bằng cặp giá trị khóa và bản thân giá trị là bản đồ. Tôi muốn đọc giá trị như một đối tượng MAP để tôi có thể xử lý thêm.Làm thế nào để đọc tập tin tuần tự 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");
}
đầu ra của chương trình: Key: [này là chìa khóa] Giá trị là: {abc = 839.177, xyz = 548.498, lmn = 2, pqr = 1}
Ở đây tôi đang nhận được giá trị như chuỗi , nhưng tôi muốn nó như một đối tượng của bản đồ.
Từ đâu đến 'val'? Và một Bản đồ không phải là "Có thể ghi", bạn đang sử dụng những gì cho các lớp trong công việc m/r của bạn? –
Tôi chỉ có các tập tin tuần tự và không biết những gì họ đang làm trong bản đồ giảm job.And tôi được cung cấp với thông tin sau. "Mỗi tập tin như vậy cần phải được mở như một tập tin trình tự. Giải nén codec cần phải được sử dụng - lớp tệp trình tự dường như có thể cho bạn biết codec nén nào sẽ sử dụng và sau đó tôi nghĩ mỗi khóa và mỗi giá trị được mã hóa bằng TypedBytes. " – samarth
Sau đó, bạn phải có được các lớp của khóa và giá trị, nếu không bạn sẽ không deserialize chúng đúng cách. –