 <p>If you take a look at the <a href="http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/CLI_CreateStreaming.html" rel="nofollow">Amazon Elastic MapReduce Developer Guide</a> you need to specify the location of input data, output data, mapper script and reducer script in S3 in order to create a MapReduce job flow.</p> <p>If you need to do some pre-processing (such as dumping the MapReduce input file from a database) or post-processing (such as splitting the MapReduce output file to other locations in S3), you will have to automate those tasks separately from the MapReduce job flow.</p> <p>You may use the <a href="http://boto.cloudhackers.com/" rel="nofollow"><code>boto</code> library</a> to write those pre-processing and post-processing scripts. They can be run on an EC2 instance or any other computer with access to the S3 bucket. Data transfer from EC2 may be cheaper and faster, but if you don't have an EC2 instance available for this, you could run the scripts in your own computer... unless there is too much data to transfer!</p> <p>You can go as far as you want with automation: You may even orchestrate the whole process of generating input, launching a new MapReduce job flow, waiting for the job to finish and processing output accordingly, so that given the proper configuration, the whole thing is reduced to pushing a button :)</p>