0

Airflow とその Operator S3ToGoogleCloudStorageOperator を使用して、S3 から GCP に大きなファイルを転送しようとしています。400 Mb のファイルを転送できましたが、それ以上にしようとすると失敗します: 2Gb 次のエラーが表示されます:

[2018-09-19 12:30:43,907] {models.py:1736} エラー - [Errno 28] デバイスのトレースバックにスペースが残っていません (最新の呼び出しが最後):
ファイル "/home/jma/airflow/env/lib /python3.5/site-packages/airflow/models.py"、1633 行目、_run_raw_task 結果 = task_copy.execute(context=context)
ファイル "/home/jma/airflow/env/lib/python3.5/site- packages/airflow/contrib/operators/s3_to_gcs_operator.py"、156 行目、実行中 file_object.download_fileobj(f)
ファイル "/home/jma/airflow/env/lib/python3.5/site-packages/boto3/s3/inject .py"、760 行目、object_download_fileobj ExtraArgs=ExtraArgs、Callback=Callback、Config=Config)
ファイル "/home/jma/airflow/env/lib/python3.5/site-packages/boto3/s3/inject.py" 、678 行目、download_fileobj で future.result() を返す
ファイル "/home/jma/airflow/env/lib/python3.5/site-packages/s3transfer/futures.py"、73 行目、結果は self._coordinator.result()
ファイル "/home/jma/airflow/ env/lib/python3.5/site-packages/s3transfer/futures.py"、233行目、結果としてself._exception
ファイルが発生します"/home/jma/airflow/env/lib/python3.5/site-packages/s3transfer /tasks.py" の 126 行目、呼び出しでself._execute_main(kwargs) を返し
ます_execute_main return_value = self._main(**kwargs)
ファイル「/home/jma/airflow/env/lib/python3.5/site-packages/s3transfer/download.py」、583 行目、_main ファイルobj.write(data)
ファイル「/home/jma/airflow/env/lib/python3.5/tempfile.py」、622 行目、func_wrapper return func(*args, **kwargs) OSError: [Errno 28] デバイスにスペースが残っていません

DAG の完全なコードは、この他の SO の質問にあります。

ファイルは S3 から GCP に直接送信されませんが、Airflow が実行されているマシンにダウンロードされます。トレースを見ると、boto が原因である可能性がありますが、問題を修正する方法がわかりません。つまり、ファイルを一時的にコピーするためのフォルダーを割り当てます。

非常に大きなファイルを移動したいのですが、制限が課されないように設定するにはどうすればよいですか?

GCP で Google Cloud Shell から Airflow 1.10 を実行しています。ホーム ディレクトリに 4 Gb の空き容量があります (移動するファイルは 2 Gb です)。

4

1 に答える 1