2012-06-12 11 views
7

Tôi mới sử dụng Hadoop/PIG. Tôi có một câu hỏi cơ bản.Gỡ lỗi trong PIG UDF

Chúng tôi có cơ sở Ghi nhật ký trong PIG UDF không? Tôi đã viết một UDF mà tôi cần phải xác minh Tôi cần phải ghi lại các câu lệnh nhất định để kiểm tra luồng. Có một cơ sở Logging có sẵn không? Nếu có các bản ghi của lợn ở đâu?

Trả lời

6

Giả sử UDF của bạn mở rộng EvalFunc, bạn có thể sử dụng Trình ghi nhật ký được trả lại từ EvalFunc.getLogger(). Đầu ra bản ghi sẽ được hiển thị trong nhiệm vụ Map/Reduce liên quan mà lợn thực hiện (nếu công việc thực thi trong nhiều hơn một giai đoạn duy nhất thì bạn sẽ phải chọn qua chúng để tìm các mục nhật ký liên quan).

+0

Vì vậy, nhật ký sẽ kết thúc trong tệp nhật ký Giảm bản đồ tác vụ? Tôi có thể làm cho báo cáo Nhật ký của mình cụ thể thành một tệp riêng biệt không? – Uno

+0

Có, họ sẽ. Bạn có thể, nhưng sau đó bạn phải đi đến mỗi công cụ theo dõi để xem/thu thập chúng. Tôi đoán bạn có thể thử và cấu hình một logger từ xa (đăng nhập vào một DB ví dụ). –

+0

Tôi không biết chắc chắn, nhưng bạn có thể thử PigLogger - có thể gửi mọi thứ lại cho khách hàng. –

2

có lẽ hiển nhiên, nhưng tôi khuyên bạn nên gỡ lỗi UDF của mình ở chế độ cục bộ trước khi triển khai trên cụm/phân trang giả. Bằng cách này, bạn có thể gỡ lỗi nó ngay bên trong IDE của bạn (nhật thực trong trường hợp của tôi) dễ dàng hơn việc ghi nhật ký.

+0

Có một trang web hay một số bước mà tôi có thể làm theo để bắt đầu trên Eclipse. Tôi có nghĩa là lợn trên nhật thực. – Uno

+1

không biết về một trang web có các bước, nhưng đơn giản là đủ: đặt các phần tử lõi và phụ thuộc vào lợn vào trong maven của bạn, và sau đó làm việc với 'org.apache.pig.PigServer'. thử 'pigServer.registerScript (resource.getInputStream(), pigScriptParams, null); 'và sau đó' số liệu thống kê PigStats = pigServer.store ("final_output", pigScriptParams.get ("output_folder"), pigStoreFunc) .getStatistics(); ' – ihadanny