Skip to main content

Python MapReduce framework

Project description

https://github.com/Yelp/mrjob/raw/master/docs/logos/logo_medium.png

mrjob is a Python 2.6+ package that helps you write and run Hadoop Streaming jobs.

Stable version (v0.4.6) documentation

Development version documentation

https://travis-ci.org/Yelp/mrjob.png

mrjob fully supports Amazon’s Elastic MapReduce (EMR) service, which allows you to buy time on a Hadoop cluster on an hourly basis. It also works with your own Hadoop cluster.

Some important features:

  • Run jobs on EMR, your own Hadoop cluster, or locally (for testing).

  • Write multi-step jobs (one map-reduce step feeds into the next)

  • Duplicate your production environment inside Hadoop
    • Upload your source tree and put it in your job’s $PYTHONPATH

    • Run make and other setup scripts

    • Set environment variables (e.g. $TZ)

    • Easily install python packages from tarballs (EMR only)

    • Setup handled transparently by mrjob.conf config file

  • Automatically interpret error logs from EMR

  • SSH tunnel to hadoop job tracker on EMR

  • Minimal setup
    • To run on EMR, set $AWS_ACCESS_KEY_ID and $AWS_SECRET_ACCESS_KEY

    • To run on your Hadoop cluster, install simplejson and make sure $HADOOP_HOME is set.

Installation

From PyPI:

pip install mrjob

From source:

python setup.py install

A Simple Map Reduce Job

Code for this example and more live in mrjob/examples.

"""The classic MapReduce job: count the frequency of words.
"""
from mrjob.job import MRJob
import re

WORD_RE = re.compile(r"[\w']+")


class MRWordFreqCount(MRJob):

    def mapper(self, _, line):
        for word in WORD_RE.findall(line):
            yield (word.lower(), 1)

    def combiner(self, word, counts):
        yield (word, sum(counts))

    def reducer(self, word, counts):
        yield (word, sum(counts))


if __name__ == '__main__':
     MRWordFreqCount.run()

Try It Out!

# locally
python mrjob/examples/mr_word_freq_count.py README.rst > counts
# on EMR
python mrjob/examples/mr_word_freq_count.py README.rst -r emr > counts
# on your Hadoop cluster
python mrjob/examples/mr_word_freq_count.py README.rst -r hadoop > counts

Setting up EMR on Amazon

Advanced Configuration

To run in other AWS regions, upload your source tree, run make, and use other advanced mrjob features, you’ll need to set up mrjob.conf. mrjob looks for its conf file in:

  • The contents of $MRJOB_CONF

  • ~/.mrjob.conf

  • /etc/mrjob.conf

See the mrjob.conf documentation for more information.

Reference

More Information

Thanks to Greg Killion (blind-works.net) for the logo.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mrjob-0.4.6.tar.gz (195.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mrjob-0.4.6-py2-none-any.whl (244.7 kB view details)

Uploaded Python 2

File details

Details for the file mrjob-0.4.6.tar.gz.

File metadata

  • Download URL: mrjob-0.4.6.tar.gz
  • Upload date:
  • Size: 195.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for mrjob-0.4.6.tar.gz
Algorithm Hash digest
SHA256 ca71d5b5b68f25a9ba003b834b66f70f3fce13f2ee52093e98bcd0eef9ed6cdf
MD5 c8b07a84fc8df4856f71128036019e02
BLAKE2b-256 6de6a157ef51e15df4d3e54d481136928018a758bbe1bc8c608c1dacd7c3f5c9

See more details on using hashes here.

File details

Details for the file mrjob-0.4.6-py2-none-any.whl.

File metadata

File hashes

Hashes for mrjob-0.4.6-py2-none-any.whl
Algorithm Hash digest
SHA256 60dfb4c7ac5f2eea3b67aad7ee3c8b7c3841880fb672cc2056c07c709066004f
MD5 def1a3e6830cc04e9a02bd7914783212
BLAKE2b-256 a82a5c26c4964cae6719143b445189428f47c524c5c39a868f26607651ad404a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page