Tôi đang xử lý dữ liệu từ tập hợp các tệp có chứa dấu ngày như một phần của tên tệp. Dữ liệu trong tệp không chứa dấu ngày tháng. Tôi muốn xử lý tên tệp và thêm nó vào một trong các cấu trúc dữ liệu bên trong tập lệnh. Có cách nào để làm điều đó trong Pig Latin (một phần mở rộng để PigStorage có thể?) Hoặc tôi cần phải preprocess tất cả các tập tin bằng cách sử dụng Perl hoặc tương tự trước?Làm cách nào để kết hợp tên tệp nhập hiện tại vào tập lệnh Pig Latin của tôi?
tôi hình dung một cái gì đó như sau:
-- Load two fields from file, then generate a third from the filename
rawdata = LOAD '/directory/of/files/' USING PigStorage AS (field1:chararray, field2:int, field3:filename);
-- Reformat the filename into a datestamp
annotated = FOREACH rawdata GENERATE
REGEX_EXTRACT(field3,'*-(20\d{6})-*',1) AS datestamp,
field1, field2;
Lưu ý đặc biệt "filename" datatype trong báo cáo LOAD. Có vẻ như nó sẽ phải xảy ra ở đó khi dữ liệu đã được tải quá muộn để quay lại tên tệp nguồn.