2012-02-24 27 views
5

Tôi phải phân tích các tệp PDF, có trong HDFS trong Chương trình giảm thiểu bản đồ trong Hadoop. Vì vậy, tôi nhận được tệp PDF từ HDFS dưới dạng Phân tách đầu vào và nó phải được phân tích cú pháp và được gửi đến Lớp Mapper. Để triển khai InputFormat này, tôi đã xem qua số link này. Các phân tách đầu vào này có thể được phân tích cú pháp và chuyển đổi thành định dạng văn bản như thế nào?Phân tích cú pháp các tệp PDF trong Bản đồ Hadoop Giảm

+0

Câu trả lời này có thể là một phần của những gì bạn đang tìm kiếm: http://stackoverflow.com/a/9298965/698839 –

Trả lời

6

Xử lý tệp PDF trong Hadoop có thể được thực hiện bằng cách mở rộng FileInputFormat Lớp. Hãy để lớp mở rộng nó là WholeFileInputFormat. Trong lớp WholeFileInputFormat bạn ghi đè phương thức getRecordReader(). Hiện tại, mỗi bản pdf sẽ được nhận là Tách nhập riêng lẻ. Sau đó, chia tách riêng lẻ này có thể được phân tích cú pháp để trích xuất văn bản. Điều này link cho một ví dụ rõ ràng về sự hiểu biết làm thế nào để mở rộng FileInputFormat.

1

Tùy thuộc vào phần chia tách của bạn. Tôi nghĩ (có thể là sai) mà bạn sẽ cần mỗi PDF nói chung để phân tích nó. Có những thư viện Java để làm điều này, và Google biết chúng ở đâu.

Cho rằng, bạn sẽ cần phải sử dụng một cách tiếp cận nơi bạn có toàn bộ tệp khi bạn đã sẵn sàng phân tích cú pháp đó. Giả sử bạn muốn làm điều đó trong trình ánh xạ, bạn cần một người đọc có thể trao toàn bộ tệp cho người lập bản đồ. Bạn có thể viết trình đọc của riêng bạn để làm điều này, hoặc có lẽ đã có một người ở đó. Bạn có thể có thể xây dựng một người đọc quét thư mục của các tệp PDF và chuyển tên của từng tệp làm khóa vào trình ánh xạ và nội dung dưới dạng giá trị.

+0

Triển khai định dạng WholeFileInput thay vì định dạng CombileFileInput giải quyết được vấn đề. Vì vậy, trong định dạng WholeFileInput, mỗi tệp PDF sẽ được nhận dưới dạng một phần tách đầu vào đơn. Sau đó, các phần tách đầu vào này có thể được phân tích cú pháp hoàn toàn. – WR10

+0

Ngoài ra khi cố gắng phân tích cú pháp toàn bộ tệp dưới dạng một phần tách, kích thước của tệp được đọc có phải là nút cổ chai không? Hãy xem xét một tệp TB có kích thước và nếu có một tệp thì nó phải được phân tích cú pháp bắt buộc trên một máy tính duy nhất. làm thế nào để chúng ta vượt qua cái nút cổ chai này? – WR10

+0

Vâng, trước tiên hãy tìm hiểu xem đó có thực sự là trường hợp bạn cần toàn bộ PDF để phân tích cú pháp nó hay không. Nếu không, điều đó sẽ khắc phục được sự cố. Giả sử rằng bạn không thể phá vỡ nó, sau đó tôi nghĩ rằng bạn phải vượt qua tên tập tin như chia tách, và đọc trực tiếp từ HDFS trong bản đồ của bạn. –

Các vấn đề liên quan