我一直试图直接从/ 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 :(得分:0)
在调查此自定义输入阅读器后,我遇到了allowed_old
上的reader_spec = _get_params(mapper_spec, allow_old=False)
标记。当设置为False
时,它要求所有输入阅读器参数都是mapreduce上参数input_reader的字典.yaml
将allowed_old
设置为True
可让您在input_reader参数之外列出mapreduce.yaml所需的所有参数。