2015-04-30 106 views
0

我一直試圖直接從/ MapReduce的儀表盤啓動特定的MapReduce的,但我需要傳遞一個字典輸入讀卡器參數或我得到輸入讀卡器字典

BadReaderParamsError: Input reader parameters should be a dictionary

問題是yaml驗證不會讓我添加任何類型的嵌套映射,我需要它。

我mapreduce.yaml看起來像這樣

- name: Read CSV from GCS 
    mapper: 
    input_reader: mapreduce.input_readers.GoogleCloudStorageLineInputReader 
    handler: mapreduce.mapper 
    params: 
    - name: input_reader 
     default: {bucket: gcs-bucket} 

這隻會導致我類似BadYamlError: in "<string>", line 16, column 25: default: {bucket: gcs-bucket} ^

我試了YAML批准嵌套映射的種種錯誤,但我可能會錯過黃金一個 - 或者驗證過於苛刻。

是否可以通過mapreduce.yaml傳遞字典,或者我必須以編程方式啓動此作業?

回答

0

調查我整個allowed_old標誌來到reader_spec = _get_params(mapper_spec, allow_old=False)當設置爲False這個自定義輸入讀卡器後,它要求所有的輸入參數,讀者要對參數input_reader字典上mapreduce.yaml

設置allowed_oldTrue讓您可以在input_reader參數之外列出mapreduce.yaml上需要的所有參數。