2017-05-17 21 views
0

私はcsv形式に変換する必要があるgrib(バイナリ)形式の600のファイルを持っています。最初は1回限りの変換ですが、後で毎日ファイルを受け取るため、データファクトリで実行するカスタムC#アクティビティを実装しました。最初にこのアクティビティをD14 v2 VMのバッチアカウントで実行したときに、一度に1つのファイルが変換され、各ファイルは変換に20〜25分かかりました。これにより、1週間以上が追加されます。何らかの理由でコンバージョンを再実行する必要がある場合、これは長すぎます。この変換を並列化する良い方法はありますか?データファクトリのカスタムアクティビティを並列化する方法は?

入力ファイルと出力ファイルの両方が2つの別々のコンテナに格納されます。入力ファイルはそれぞれ約50Mbで、出力ファイルはそれぞれ約2Gbです。データファクトリアクティビティは、ジョブの開始時に入力コンテナにあるすべてのファイルを変換します。

カスタムアクティビティにスレッドプールを追加して、作業を並列化するための入力ファイルごとに別のスレッドを追加しようとしました。それは約のためにうまくいきます。 10ファイルに変換するのに約40分かかりますが、同時に複数の入力ファイルを追加すると、データファクトリジョブはsystem.logファイルの例外情報なしで異常終了します。

作業中のエラー:プロセスコード: '-532462766'で終了しました。例外メッセージ:「HRESULTからの例外:0xE0434352」

+0

あなたはその単一のVMを使い果たしているようです。 1つの選択肢は、ADFでファイルごとに1つのカスタムアクティビティを作成することです(手動でJSONをカットアンドペーストすることが多い)。しかし、あなたの単一のADFカスタムアクティビティを持つことは、AzureバッチAPIを呼び出すことによって、ファイルをリストし、ファイルごとに1つのAzureバッチタスクをキューに入れること以外に何もしません。 Azureバッチプールを設定すると、10台のVMをスピンアップし、VM間でファイル変換タスクを配布することができます – GregGalloway

答えて

0

Azure Data Lakeを使用して必要なスケーラビリティを達成することをお勧めします。ファイルに何らかの構造があり、USQLを細断処理す​​るよう書いていると仮定すると、これらを結合して変換すると、バッチ・サービスを使用するADFカスタム・アクティビティと比べて実装がはるかに簡単になります。

最高のパフォーマンスを実現するには、当然、BLOBストアの代わりにData Lakeストレージにファイルを格納する必要があります。 あなたはwasb URLを経由する必要がある場合、データレイク解析サービスのデータソースとしてブロブストレージを使用することができます。

enter image description here

最後に、あなたはデータの工場からUSQLを呼び出し、活動上の並列度を指定することができます。また、ファイル名のコレクションを渡すためのUSQLストアドプロシージャを用意することもできます。データ・ファクトリーから再度処理することができます。

この記事をチェックアウト:https://www.purplefrogsystems.com/paul/2017/02/passing-parameters-to-u-sql-from-azure-data-factory/

・ホープ、このことができます。

ps。上記のコメントに応じてJSONをコピー&ペーストしないでください! Yuk!一部のメタデータと共にPowerShellを使用して、ADFコマンドレットを使用してデータファクトリパイプラインを出力します。

+0

カスタム抽出プログラムを実装した別の同様のタスクでUSQLを使用しようとしましたが、いくつかの問題が発生しました: - Visual Studio用のADLAツールはWindows 7をサポートしなくなりました。しかし、ADLAツールを以前のバージョンにダウングレードすることは可能でした。 - ダウングレード後、私はUSQLカスタムエクストラクタのデバッグを行うことができませんでした。 また、現行のタスクでは、NuGetパッケージを使用してgribファイルを読み取ります。このAPIは、ファイルを読み込むときにファイル名を必要とし、USQLカスタムエクストラクタでストリームを取得するだけなので、このNuGetパッケージをUSQLで使用できるかどうかわかりません。 –

+0

私は、Windows 7があなたのデータを扱うために間違ったアーキテクチャを選択する理由であるとは思わないでしょう!次に、抽出プログラムのエラーと詳細を取得し、ここにUSQLタグを使用して質問を投稿します。 –

関連する問題