2015-07-20 19 views

Trả lời

22

Cách đơn giản nhất là tạo ra một kịch bản bash chứa các lệnh cài đặt, sao chép nó vào S3, và thiết lập một hành động bootstrap từ bàn điều khiển để trỏ đến kịch bản của bạn.

Dưới đây là một ví dụ tôi đang sử dụng trong sản xuất:

s3: //mybucket/bootstrap/install_python_modules.sh

#!/bin/bash -xe 

# Non-standard and non-Amazon Machine Image Python modules: 
sudo pip install -U \ 
    awscli   \ 
    boto    \ 
    ciso8601   \ 
    ujson    \ 
    workalendar 

sudo yum install -y python-psycopg2 
+0

này sẽ cài đặt các gói trên một trong các nút trong cụm EMR. Làm cách nào để đảm bảo gói được cài đặt trên tất cả các nút? – Aliza

+1

Cài đặt gói này trên tất cả các nút – noli

4

Nói tóm lại, có hai cách để cài đặt các gói với pip, tùy thuộc vào nền tảng này. Trước tiên, bạn cài đặt bất cứ điều gì bạn cần và sau đó bạn có thể chạy bước Spark của bạn. Cách dễ nhất là sử dụng emr-4.0.0 và 'command-runner.jar':

from boto.emr.step import JarStep 
>>> pip_step=JarStep(name="Command Runner", 
...    jar="command-runner.jar", 
...    action_on_failure="CONTINUE", 
...    step_args=['sudo','pip','install','arrow'] 
...) 
>>> spark_step=JarStep(name="Spark with Command Runner", 
...     jar="command-runner.jar", 
...     step_args=["spark-submit","/usr/lib/spark/examples/src/main/python/pi.py"] 
...     action_on_failure="CONTINUE" 
) 
>>> step_list=conn.add_jobflow_steps(emr.jobflowid, [pip_step,spark_step]) 

Trên 2.x và 3.x, bạn sử dụng tập lệnh-runner.jar theo cách tương tự ngoại trừ việc bạn có để chỉ định URI đầy đủ cho scriptrunner.

EDIT: Xin lỗi, tôi không thấy rằng bạn muốn làm điều này thông qua giao diện điều khiển. Bạn cũng có thể thêm các bước tương tự trong bảng điều khiển. Bước đầu tiên sẽ là một JAR của Khách hàng với cùng một arg như trên. Bước thứ hai là một bước tia lửa. Hi vọng điêu nay co ich!

+0

nơi nào 'conn' đến từ –

Các vấn đề liên quan