[](https://travis-ci.org/delijati/spark-emr)
Run an python package on AWS EMR
## Install
Develop install:
$ pip install -e .
Testing:
$ pip install tox
$ tox
## Setup
The easiest way to get EMR up and running is to go through the Web-Interface
and create a ssh key, and start a cluster by hand. This will then create the
needed subnet_key and EMR roles.
## Config yaml file
Create a ``config.yaml`` per project or as a default into
`~/.config/spark-emr.yaml`
bootstrap_uri: s3://foo/bar
master:
instance_type: m4.large
size_in_gb: 100
core:
instance_type: m4.large
instance_count: 2
size_in_gb: 100
ssh_key: XXXXX
subnet_id: subnet-XXXXXX
python_version: python36
emr_version: emr-5.20.0
consistent: false
optimization: false
region: eu-central-1
job_flow_role: EMR_EC2_DefaultRole
service_role: EMR_DefaultRole
## CLI-Interface
### Start
To run a python code on EMR you need to build a proper python package aka
`setup.py` with `console_scripts` the script needs to end on `.py` or yarn
won't be able to execute it |-(
Bootstrap a cluster, install the pypackage, execute the task in cmdline, poll
cluster until finished, stop cluster:
$ spark-emr start \
[--config config.yaml] \
--name "Spark-ETL" \
--bid-master 0.04 \
--bid-core 0.04 \
--cmdline "etl.py --input s3://in/in.csv --output s3://out/out.csv" \
--tags foo 2 bar 4 \
--poll \
--yarn-log \
--package "../"
Running with a released pypackage version (pip):
$ spark-emr start \
... \
--package pip+etl_pypackage
### Status
Returns the status of a cluster (also terminated ones):
$ spark-emr status --cluster-id j-XXXXX
### List
List all cluster and filter optionally by tag:
$ spark-emr list [--config config.yaml] [--filter somekey somevalue]
### Stop
Stop a running cluster:
$ spark-emr stop --cluster-id j-XXXXX
### Spot price check
This call returns for all regions and configured instances the spot price:
$ spark-emr spot
# Appendix
### Running commands on EMR
The created command can also be run directly from the master:
$ /usr/bin/spark-submit \
--deploy-mode cluster \
--master yarn \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=python35 \
--conf spark.executorEnv.PYSPARK_PYTHON=python35 \
/usr/local/bin/etl.py --input s3://in/in.csv --output s3://out/out.csv
### Running commands on docker
To test if our spark is running as expected we can run it locally in docker.
$ git clone https://github.com/delijati/spark-docker
$ cd spark-docker
$ docker build . --pull -t spark
Now we can run our spark job locally.
$ docker run --rm -ti -v `pwd`/test/dummy:/app/work spark \
bash -c "cd /app/work && pip3 install -e . && spark_emr_dummy.py 10"
# CHANGES
0.1.2 (2019-03-10)
------------------
- Add spot price check cli.
- Add spot BidPrice.
- Show estimated cost.
- Filter by tag for list cli.
0.1.1 (2019-02-21)
------------------
- Fixed url in setup.py.
0.1.0 (2019-02-21)
------------------
- Initial release.
Metadata
Release files for spark-emr 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| spark_emr-0.1.2.tar.gz | 13.4 kB | Without provenance | Details for spark_emr-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| spark_emr-0.1.2-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details for spark_emr-0.1.2-py2.py3-none-any.whl |
Total release size: 32.1 kB
Release files / spark_emr-0.1.2.tar.gz
| Download URL | spark_emr-0.1.2.tar.gz |
|---|---|
| Size | 13.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9dc61d3f3b25b311d3e86e294062fd5145a6e4274f8668ef8c3c891de798a208
|
|
BLAKE2b-256 checksum How to use checksums |
08a8795758983d206c610cb69de875a8a56f42f1a069b4a4ec5043f5275c3634
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.31.1 CPython/3.6.6
|
Release files / spark_emr-0.1.2-py2.py3-none-any.whl
| Download URL | spark_emr-0.1.2-py2.py3-none-any.whl |
|---|---|
| Size | 18.7 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
b3c3f127ed2df309b89115f8aaef9c2c66b89dc311f8cf00d3323d403d7b8f5d
|
|
BLAKE2b-256 checksum How to use checksums |
99ff672e1bf5d3da274ab38bf816f10dd47635bf6b56a6a037efb1424d1b5dae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.31.1 CPython/3.6.6
|
Security for spark-emr 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.