AWS Glue ジョブが Amazon CloudWatch で生成するログが多すぎます。生成されるログの数を減らしたいと考えています。
解決方法
AWS Glue-Spark ETL ジョブを使用すると、AWS Glue ジョブが実行されるインスタンスによって生成されるログの冗長さを制御することはできません。ログが冗長であるため、それらは内部障害をモニタリングし、ジョブ障害の診断に役立てるために使用できます。ただし、ここに示す手順に従って Spark のログレベルを定義できます。
連続ロギングの標準フィルター設定を選択する
ジョブの連続ロギングを有効にしている場合は、[Log filtering] (ログフィルタリング) オプションの [Standard] (標準) フィルターを選択します。このフィルターは、役に立たない Apache Spark ドライバー/エグゼキューター、および Apache Hadoop YARN ハートビートログメッセージをプルーニングするのに役立ちます。AWS Glue ジョブのログフィルター設定を変更するには、次の手順を実行します。
- AWS Glue コンソールを開きます。
- ナビゲーションペインで [ジョブ] を選択します。
- 更新するジョブを選択します。
- [アクション] を選択してから、[ジョブの編集] をクリックします。
- [モニタリングオプション] セクションを展開します。
- [連続ロギング] を選択します。
- [ログフィルタリング] の下で、[標準フィルター] を選択します。
- [保存] を選択します。
AWS Command Line Interface (AWS CLI) からこの設定を変更するには、次のコマンドを使用します。
'--enable-continuous-cloudwatch-log': 'true'
'--enable-continuous-log-filter': 'true'
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
詳細については、「AWS Glue ジョブの連続ロギングの有効化」を参照してください。
重要: 標準のフィルター設定であっても、Spark ジョブのアプリケーションマスターログは /aws-glue/jobs/output および /aws-glue/jobs/error log グループにプッシュされています。
Spark コンテキストメソッド setLogLevel を使用してロギングレベルを設定する
ジョブのロギングレベルを設定するには、PySpark.context.SparkContext の setLogLevel メソッドを使用します。有効なログレベルには、ALL、DEBUG、ERROR、FATAL、INFO、OFF、TRACE、および WARN があります。詳細については、setLogLevel についての Spark ドキュメントを参照してください。
次のコードを使用して Spark コンテキストメソッドをインポートし、ジョブのロギングレベルを設定します。
from pyspark.context import SparkContext
sc = SparkContext()
sc.setLogLevel("new-log-level")
**注:**new-log-level は、ジョブに設定するロギングレベルに置き換えてください。
詳細については、ロギングの設定についての Spark ドキュメントを参照してください。
カスタム log4j.properties ファイルを使用して、ロギングレベルを定義します。
Spark はロギングで log4j 設定を使用します。ロギング設定を log4j.properties ファイルに含め、ファイルを Amazon Simple Storage Service (Amazon S3) にアップロードし、AWS Glue ジョブでファイルを使用することができます。
ジョブ内の Amazon S3 ファイルを参照するには、次の手順を実行します。
- AWS Glue コンソールを開きます。
- ナビゲーションペインで [ジョブ] を選択します。
- ファイルを参照するジョブを選択します。
- [アクション] を選択してから、[ジョブの編集] を選択します。
- [Security configuration, script libraries, and job parameters (optional)] (セキュリティ設定、スクリプトライブラリ、およびジョブパラメータ (オプション)) セクションを展開します。
- [Referenced files path] (参照ファイルのパス) には、lo4j.properties ファイルを保存した完全な S3 パスを貼り付けます。
詳細については、「独自のカスタムスクリプトの提供」を参照してください。
関連情報
Amazon CloudWatch によるモニタリング