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.7/3.4+ package that helps you write and run Hadoop Streaming jobs.

Stable version (v0.7.1) 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. mrjob has basic support for Google Cloud Dataproc (Dataproc) which allows you to buy time on a Hadoop cluster on a minute-by-minute basis. It also works with your own Hadoop cluster.

Some important features:

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

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

  • Easily launch Spark jobs on EMR or your own Hadoop cluster

  • 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

  • SSH tunnel to hadoop job tracker (EMR only)

  • Minimal setup

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

    • To run on Dataproc, set $GOOGLE_APPLICATION_CREDENTIALS

    • No setup needed to use mrjob on your own Hadoop cluster

Installation

pip install mrjob

As of v0.7.0, Amazon Web Services and Google Cloud Services are optional depedencies. To use these, install with the aws and google targets, respectively. For example:

pip install mrjob[aws]

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 Dataproc
python mrjob/examples/mr_word_freq_count.py README.rst -r dataproc > counts
# on your Hadoop cluster
python mrjob/examples/mr_word_freq_count.py README.rst -r hadoop > counts

Setting up EMR on Amazon

Setting up Dataproc on Google

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 (ROMEO ECHO_DELTA) 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.7.1.tar.gz (645.7 kB view details)

Uploaded Source

Built Distribution

mrjob-0.7.1-py2.py3-none-any.whl (434.6 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: mrjob-0.7.1.tar.gz
  • Upload date:
  • Size: 645.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/2.7.12

File hashes

Hashes for mrjob-0.7.1.tar.gz
Algorithm Hash digest
SHA256 d7d455ce8cd790e3f723091f4bf4e962d40d8357ac38d51c1ad8b0ede64c77e7
MD5 b9b11b316be24cafcf8a950d5f28beed
BLAKE2b-256 7b5c4a11fa271d5a36ccdd6a8eb5eb112d2c1b18ae1e7284a67dbf7ed17e39dd

See more details on using hashes here.

File details

Details for the file mrjob-0.7.1-py2.py3-none-any.whl.

File metadata

  • Download URL: mrjob-0.7.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 434.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/2.7.12

File hashes

Hashes for mrjob-0.7.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ba0580a6dfde02f5f12e865cc3ddd351f8ab4464881ac8d8526aa8fcaca6221f
MD5 c89991e97778330c49d380e29691a5ab
BLAKE2b-256 e6255db4339980022a30a4b354f15a4ac74b8bfe2456f756274a5048ac40f117

See more details on using hashes here.

Supported by

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