Câu hỏi của tôi rất đơn giản. Pig (Hadoop) có thể xử lý các tệp ebcdic không? Tôi có một số và tôi muốn xử lý và xử lý chúng bằng nền tảng Pig trong Hadoop.
Hiện tại tôi đã lưu tệp và đang cố tải nó như sau:
A = LOAD '/user/enrico/FilesForPigs/IRIS.txt' AS (f1,f2,f3);
Nó có vẻ hoạt động nhưng khi tôi thử nhập: DUMP A; tôi gặp lỗi.
biên tập:
Theo gợi ý của Donald, tôi đang cố gắng tạo một chương trình Java để thực hiện chuyển đổi, cụ thể là tôi đang cố gắng tạo hàm LOAD của riêng mình.
Trên thực tế mã của tôi có vấn đề sau:
@Ghi đè
công khai inputFormat getInputFormat() {
trả về TextInputFormat mới();
}
Đây là ví dụ tôi tìm thấy, nhưng TextInputFormat không phù hợp với trường hợp của tôi. Bạn có biết làm thế nào tôi có thể giải quyết điều này?
Cảm ơn
Không, cơ chế lưu trữ mặc định giả định dữ liệu là ASCII, được phân cách bằng tab. Bạn có thể sử dụng PigStorage(',')
Thay đổi dấu phân cách thành dấu phẩy.
Bạn có hai lựa chọn:
- Chuyển đổi dữ liệu từ ebcdic sang một số định dạng CSV (bạn có thể thực hiện việc này bằng cách sử dụng một chương trình luồng đơn nếu khối lượng dữ liệu không phải là vấn đề hoặc công việc MapReduce nếu khối lượng dữ liệu có vấn đề)
- Viết hàm tải ebcdic tùy chỉnh. Bạn có thể xem cách thực hiện việc này đây .
Có thể ai đó đã triển khai tính năng này nhưng sau khi tìm kiếm nhanh trên Google, tôi không thấy gì cả.
Tôi là một lập trình viên xuất sắc, rất giỏi!