2012-01-25 27 views
5

Loại định dạng tệp nào có thể đọc được bằng PIG?định dạng tệp có thể đọc bằng PIG

Tôi làm cách nào để lưu trữ chúng ở các định dạng khác nhau? Giả sử chúng ta có tệp CSV và tôi muốn lưu trữ nó dưới dạng tệp MXL như thế nào điều này có thể được thực hiện? Bất cứ khi nào chúng ta sử dụng lệnh STORE nó làm cho thư mục và nó lưu trữ tập tin như là một phần-m-00000 làm thế nào tôi có thể thay đổi tên của tập tin và ghi đè lên thư mục?

Trả lời

6

loại định dạng tệp nào có thể đọc được bằng PIG? làm thế nào tôi có thể lưu trữ chúng trong các định dạng khác nhau?

Có một vài built-in loading and storing methods, nhưng họ được giới hạn:

  • BinStorage - "nhị phân" lưu trữ
  • PigStorage - tải và lưu trữ dữ liệu mà được giới hạn bởi cái gì đó (chẳng hạn như tab hoặc dấu phẩy)
  • TextLoader - tải dòng dữ liệu bằng cách dòng (ví dụ, giới hạn bởi các ký tự xuống dòng)

piggybank là một thư viện cộng đồng đã đóng góp các hàm do người dùng xác định và có a number of loading and storing methods, bao gồm trình tải XML, chứ không phải bộ lưu trữ XML.


nói rằng chúng ta có tập tin CSV n tôi muốn lưu nó như MXL nộp thế nào điều này có thể được thực hiện?

Giả sử bạn có nghĩa là XML ở đây ... Lưu trữ trong XML là một chút thô lỗ trong Hadoop vì nó chia nhỏ tệp trên cơ sở giảm tốc, vậy làm cách nào bạn biết vị trí đặt thẻ gốc? điều này có thể là một số loại hậu xử lý để tạo ra XML được định dạng tốt.

Một điều bạn có thể làm là write a UDF có thể chuyển đổi các cột của bạn thành một chuỗi XML:

B = FOREACH A GENERATE customudfs.DataToXML(col1, col2, col3); 

Ví dụ, nói col1, col2, col3"foo", 37, "lemons", tương ứng. UDF của bạn có thể xuất ra chuỗi "<item><name>Foo</name><num>37</num><fruit>lemons</fruit></item>".


bất cứ khi nào chúng ta sử dụng lệnh CỬA HÀNG nó làm cho thư mục và nó sẽ lưu tập tin như là một phần-m-00000 làm thế nào tôi có thể thay đổi tên của tập tin và ghi đè lên thư mục?

Bạn không thể thay đổi tên của tệp đầu ra thành một tên khác ngoài part-m-00000. Đó là cách Hadoop hoạt động. Nếu bạn muốn thay đổi tên của nó, bạn nên làm một cái gì đó để nó sau khi thực tế với một cái gì đó như hadoop fs -mv output/part-m-00000 newoutput/myoutputfile. Điều này có thể được thực hiện với một kịch bản bash chạy script lợn sau đó thực thi lệnh này.

+0

cảm ơn alott :) –

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