2015-01-16 20 views
5

Tôi có dữ liệu nhị phân có chứa RDD. Tôi muốn sử dụng 'RDD.pipe' để đưa dữ liệu nhị phân đó vào một chương trình bên ngoài sẽ dịch nó sang dữ liệu chuỗi/văn bản. Thật không may, có vẻ như Spark đang mangling dữ liệu nhị phân trước khi nó được truyền cho chương trình bên ngoài.Cách dữ liệu nhị phân 'Ống' trong Apache Spark

Mã này đại diện cho những gì tôi đang cố gắng làm. Tôi đang làm gì sai? Làm thế nào tôi có thể ống dữ liệu nhị phân trong Spark?

bin = sc.textFile("binary-data.dat") 
csv = bin.pipe ("/usr/bin/binary-to-csv.sh") 
csv.saveAsTextFile("text-data.csv") 

Cụ thể, tôi đang cố gắng sử dụng Spark chuyển pcap (capture gói) dữ liệu để text/csv để tôi có thể thực hiện một phân tích về nó.

+0

Chờ, bạn có * RDD chứa dữ liệu nhị phân hay bạn cần chạy chương trình bên ngoài để tạo nó? Chạy chương trình ** một lần ** bạn có dữ liệu nhị phân là một câu hỏi cổ điển. – huitseeker

+0

Tôi có dữ liệu nhị phân và cần tạo dữ liệu văn bản. –

+0

Có, nhưng bạn đã quản lý để tải nó vào một RDD, như là bắt đầu của câu hỏi của bạn cho thấy (nhưng trái với những gì câu trả lời của bạn cho thấy)? – huitseeker

Trả lời

5

Vấn đề không phải do việc tôi sử dụng 'ống', nhưng 'textFile' không thể được sử dụng để đọc dữ liệu nhị phân. (Doh) Có một vài lựa chọn để tiến lên phía trước.

  1. Triển khai 'InputFormat' tùy chỉnh hiểu dữ liệu đầu vào nhị phân. (Rất cám ơn Sean Owen của Cloudera đã chỉ ra điều này.)

  2. Sử dụng 'SparkContext.binaryFiles' để đọc toàn bộ tệp nhị phân dưới dạng một bản ghi. Điều này sẽ tác động đến hiệu suất vì nó ngăn cản việc sử dụng nhiều hơn một bản đồ trên dữ liệu của tệp.

Trong trường hợp cụ thể của tôi cho # 1 tôi chỉ có thể tìm thấy một project from RIPE-NCC thực hiện điều này. Thật không may, nó dường như chỉ hỗ trợ một bộ giao thức mạng hạn chế.

+0

Bạn có thể chia dữ liệu nhị phân ra thành nhiều tệp nhị phân không? Đó là cách binaryFiles() được thiết kế. Nhưng tôi sợ rằng ngay cả sau đó, có một nút cổ chai bộ nhớ như đã nêu trong http://stackoverflow.com/q/30704814/507544 – nealmcb

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