0

私はSparkアプリケーションをEMR上で実行しており、いくつかのprintln()ステートメントがあります。コンソール以外では、これらのステートメントはどこに記録されますか?私クラスタのEMRはどこでスパークを保存しますか?

マイS3 AWS-logsディレクトリ構造は次のようになります。

node ├── i-0031cd7a536a42g1e │   ├── applications │   ├── bootstrap-actions │   ├── daemons │   ├── provision-node │   └── setup-devices containers/ ├── application_12341331455631_0001 │   ├── container_12341331455631_0001_01_000001

+1

:http://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log- files.html –

答えて

0

あなたがスパークから印刷するときに考慮する必要がある非常に重要なことがあります:あなたが実行されますコードを実行していますドライバの中で実行されているのですか?例えば

次の操作を行う場合、それはあなたがドライバに戻ってデータをもたらす、コンソールに出力されますよう:

for i in your_rdd.collect(): 
    print i 

しかし、以下では、エグゼキュータ内で実行されますので、それが可能になりますスパークログに書かれています。

def run_in_executor(value): 
    print value 

your_rdd.map(lambda x: value(x)) 

次に、元の質問に行くと、2番目のケースはログの場所に書き込まれます。ログは通常、/ mnt/var/log/hadoop/stepsにあるマスターノードに書き込まれますが、--log-uriを使用してs3バケットにログを設定するほうが良いかもしれません。そうすれば見つけるのが簡単になります。

0

あなたはいくつかの場所でのprintln年代を見つけることができます。

  • リソースマネージャ - >あなたのアプリケーション - >ログ - >
  • あなたのS3のログディレクトリをstdout - >containers/application_.../container_.../stdout(これは数分を要するものの移入しますEMRへのSSH
  • )適用後に、ログファイルの表示 yarn logs -applicationId <Application ID> -log_files <log_file_type>
関連する問題