在mapreduce.yaml上输入Reader字典

时间:2015-04-30 06:50:42

标签: google-app-engine mapreduce yaml

我一直试图直接从/ 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传递字典,或者我必须以编程方式启动此作业?

1 个答案:

答案 0 :(得分:0)

在调查此自定义输入阅读器后,我遇到了allowed_old上的reader_spec = _get_params(mapper_spec, allow_old=False)标记。当设置为False时,它要求所有输入阅读器参数都是mapreduce上参数input_reader的字典.yaml

allowed_old设置为True可让您在input_reader参数之外列出mapreduce.yaml所需的所有参数。