¿Configurando parámetros hadoop con boto?

Estoy intentando habilitar la omisión de entrada incorrecta en mis trabajos de Amazon Elastic MapReduce. Estoy siguiendo la maravillosa receta descrita aquí:

http://devblog.factual.com/practical-hadoop-streaming-dealing-with-brittle-code

El enlace anterior dice que necesito configurar de alguna manera los siguientes parámetros de configuración en un trabajo de EMR:

mapred.skip.mode.enabled=true mapred.skip.map.max.skip.records=1 mapred.skip.attempts.to.start.skipping=2 mapred.map.tasks=1000 mapred.map.max.attempts=10 

¿Cómo configuro estos (y otros) parámetros mapred.XXX en un JobFlow usando Boto?

Después de muchas horas de lucha, lectura de código y experimentación, aquí está la respuesta:

Necesitas agregar una nueva BootstrapAction, así:

 params = ['-s','mapred.skip.mode.enabled=true', '-s', 'mapred.skip.map.max.skip.records=1', '-s', 'mapred.skip.attempts.to.start.skipping=2', '-s', 'mapred.map.max.attempts=5', '-s', 'mapred.task.timeout=100000'] config_bootstrapper = BootstrapAction('Enable skip mode', 's3://elasticmapreduce/bootstrap-actions/configure-hadoop', params) conn = EmrConnection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) step = StreamingStep(name='My Step', ...) conn.run_jobflow(..., bootstrap_actions=[config_bootstrapper], steps=[step], ...) 

Por supuesto, si tiene más de una acción de arranque, solo debe agregarla a la matriz bootstrap_actions.