2016-09-19 6 views
7

私がAWS EMR 2.4からAWS EMR 5.0にPythonで記述したいくつかのMRジョブを移行しようとしています。これまではboto 2.4を使用していましたが、EMR 5.0はサポートされていないため、boto3に移行しようとしています。以前は、boto 2.4を使用していましたが、私はStreamingStepモジュールを使用して、入力場所と出力場所、およびマッパーとレデューサーのソースファイルの場所を指定しました。このモジュールを使用して、ジョブを実行するためにjarファイルを作成またはアップロードする必要はありませんでした。しかし、私はboto3のドキュメンテーションのどこにでも、このモジュールの等価物を見つけることができません。 boto3のストリーミングステップをMRジョブに追加すると、jarファイルをアップロードして実行する必要はありません。AWS EMR 5.0で動作するboto3のMRジョブにストリーミング・ステップを追加

答えて

5

boto3とEMR APIの記述が不十分で残念です。最低限、次のように例を数える言葉がなります

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', 
) 

を私はのbotoでこれを行うために必要が覚えていないが、私はvmem-check-enabledを無効にすることなく、適切に、単純なストリーミングジョブを実行している問題がありました。

また、スクリプトがS3のどこかにある場合は、-filesを使用してダウンロードしてください(#filenameを引数に追加すると、ダウンロードしたファイルはクラスタ内でfilenameとして利用可能になります)。

+0

ありがとうございました。出来た。残念なことに私がこれに対して設定した賞金は、あなたがそれに答える数時間前に終了しました。しかし、とにかくトンに感謝します。 :) –

関連する問題