2016-09-19 70 views
7

üzerinde çalışan boto3'te MR işine akış adımı ekle AWS EMR 2.4'ten AWS EMR 5.0'a python'da yazdığım birkaç MR işini geçirmeye çalışıyorum. Şimdiye kadar boto 2.4 kullanıyordum, ancak EMR 5.0'ı desteklemiyor, bu yüzden boto3'e geçmeye çalışıyorum. Daha önce, boto 2.4 kullanırken, giriş yeri ve çıkış konumunun yanı sıra, eşleştirici ve redüktör kaynak dosyalarının konumunu belirtmek için StreamingStep modülünü kullandım. Bu modülü kullanarak, işimi yürütmek için herhangi bir jar oluşturmak veya yüklemek zorunda kalmam. Bununla birlikte, boto3 belgelerinde herhangi bir yerde bu modül için eşdeğerini bulamıyorum. MR işime boto3'te bir akış adımı nasıl ekleyebilirim, böylece çalıştırmak için bir jar dosyası yüklemem gerekmiyor mu?AW-EMR 5.0

cevap

5

Boto3 ve EMR API'sinin oldukça zayıf bir şekilde belgelenmesi talihsiz bir durumdur.

import boto3 

emr = boto3.client('emr') 

resp = emr.run_job_flow(
    Name='myjob', 
    ReleaseLabel='emr-5.0.0', 
    Instances={ 
     'InstanceGroups': [ 
      {'Name': 'master', 
      'InstanceRole': 'MASTER', 
      'InstanceType': 'c1.medium', 
      'InstanceCount': 1, 
      'Configurations': [ 
       {'Classification': 'yarn-site', 
        'Properties': {'yarn.nodemanager.vmem-check-enabled': 'false'}}]}, 
      {'Name': 'core', 
      'InstanceRole': 'CORE', 
      'InstanceType': 'c1.medium', 
      'InstanceCount': 1, 
      'Configurations': [ 
       {'Classification': 'yarn-site', 
        'Properties': {'yarn.nodemanager.vmem-check-enabled': 'false'}}]}, 
     ]}, 
    Steps=[ 
     {'Name': 'My word count example', 
     'HadoopJarStep': { 
      'Jar': 'command-runner.jar', 
      'Args': [ 
       'hadoop-streaming', 
       '-files', 's3://mybucket/wordSplitter.py#wordSplitter.py', 
       '-mapper', 'python2.7 wordSplitter.py', 
       '-input', 's3://mybucket/input/', 
       '-output', 's3://mybucket/output/', 
       '-reducer', 'aggregate']} 
     } 
    ], 
    JobFlowRole='EMR_EC2_DefaultRole', 
    ServiceRole='EMR_DefaultRole', 
) 

Ben Boto ile bunu gerek hatırlamıyorum, ama vmem-check-enabled devre dışı bırakmadan düzgün basit akış işi çalıştıran sorunlar vardı: Minimal olarak görünecektir örnek sayım kelimesi izler. senaryonuz yere S3 bulunuyorsa

Ayrıca, -files (tartışmaya #filename kümede filename olarak kullanılabilir indirilen dosyayı yapmak ekleme) kullanarak indirebilirsiniz.

+0

Yardım için çok teşekkürler. İşe yaradı. Ne yazık ki, bunun için belirlediğim ödül, cevap vermeden önce birkaç saat sürdü. Ama yine de bir ton teşekkürler. :) –