2017-05-05 16 views
6

Tôi đã đọc qua tài liệu Beam và cũng xem qua tài liệu Python nhưng chưa tìm thấy giải thích tốt về cú pháp được sử dụng trong hầu hết mã Apache Beam ví dụ.Giải thích cú pháp python Apache Beam

Bất cứ ai có thể giải thích những gì _, |>> đang thực hiện trong mã bên dưới? Ngoài ra là văn bản trong dấu ngoặc kép tức là 'ReadTrainingData' có ý nghĩa hoặc nó có thể được trao đổi với bất kỳ nhãn nào khác không? Nói cách khác, nhãn đó được sử dụng như thế nào?

train_data = pipeline | 'ReadTrainingData' >> _ReadData(training_data) 
evaluate_data = pipeline | 'ReadEvalData' >> _ReadData(eval_data) 

input_metadata = dataset_metadata.DatasetMetadata(schema=input_schema) 

_ = (input_metadata 
| 'WriteInputMetadata' >> tft_beam_io.WriteMetadata(
     os.path.join(output_dir, path_constants.RAW_METADATA_DIR), 
     pipeline=pipeline)) 

preprocessing_fn = reddit.make_preprocessing_fn(frequency_threshold) 
(train_dataset, train_metadata), transform_fn = (
    (train_data, input_metadata) 
    | 'AnalyzeAndTransform' >> tft.AnalyzeAndTransformDataset(
     preprocessing_fn)) 

Trả lời

13

Các toán tử trong Python có thể bị quá tải. Trong Beam, | là một từ đồng nghĩa với apply, áp dụng một PTransform cho một PCollection để tạo ra một PCollection mới. >> cho phép bạn đặt tên cho một bước để hiển thị dễ dàng hơn trong các giao diện người dùng khác nhau - chuỗi giữa |>> chỉ được sử dụng cho các mục đích hiển thị này và xác định ứng dụng cụ thể đó.

Xem https://beam.apache.org/documentation/programming-guide/#transforms

+0

Cảm ơn bạn! Điều này rất hữu ích. Nếu tôi hiểu đúng thì họ có sử dụng _ bởi vì không có PCollection đầu ra cho một biến đổi writeMetadata? – dobbysock1002

+0

Thật tình cờ, nó sẽ trả về một PDone [1], mà họ không cần (vì vậy họ sử dụng throwaway _). [1] https://github.com/apache/beam/blob/master/sdks/python/apache_beam/pvalue.py#L163 –

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