私はcsv形式に変換する必要があるgrib(バイナリ)形式の600のファイルを持っています。最初は1回限りの変換ですが、後で毎日ファイルを受け取るため、データファクトリで実行するカスタムC#アクティビティを実装しました。最初にこのアクティビティをD14 v2 VMのバッチアカウントで実行したときに、一度に1つのファイルが変換され、各ファイルは変換に20〜25分かかりました。これにより、1週間以上が追加されます。何らかの理由でコンバージョンを再実行する必要がある場合、これは長すぎます。この変換を並列化する良い方法はありますか?データファクトリのカスタムアクティビティを並列化する方法は?
入力ファイルと出力ファイルの両方が2つの別々のコンテナに格納されます。入力ファイルはそれぞれ約50Mbで、出力ファイルはそれぞれ約2Gbです。データファクトリアクティビティは、ジョブの開始時に入力コンテナにあるすべてのファイルを変換します。
カスタムアクティビティにスレッドプールを追加して、作業を並列化するための入力ファイルごとに別のスレッドを追加しようとしました。それは約のためにうまくいきます。 10ファイルに変換するのに約40分かかりますが、同時に複数の入力ファイルを追加すると、データファクトリジョブはsystem.logファイルの例外情報なしで異常終了します。
作業中のエラー:プロセスコード: '-532462766'で終了しました。例外メッセージ:「HRESULTからの例外:0xE0434352」
あなたはその単一のVMを使い果たしているようです。 1つの選択肢は、ADFでファイルごとに1つのカスタムアクティビティを作成することです(手動でJSONをカットアンドペーストすることが多い)。しかし、あなたの単一のADFカスタムアクティビティを持つことは、AzureバッチAPIを呼び出すことによって、ファイルをリストし、ファイルごとに1つのAzureバッチタスクをキューに入れること以外に何もしません。 Azureバッチプールを設定すると、10台のVMをスピンアップし、VM間でファイル変換タスクを配布することができます – GregGalloway