私はカフカから得たストリーミングデータをAzure Data Lakeに書き込むためにflinkプログラムを使用しています。私はADLOutputStreamを取得して書き込みと閉じるの同期を使用するとうまくいきますが、パフォーマンスが非常に悪いのは1つのスレッドしかデータlake.Whenに書き込んでいないため、同期せずに複数のスレッドを使用しているときにHTTP 400 illegalargument例外がスローされます。複数のスレッドがAzureデータレイクのファイルに書き込む方法はありますか?複数のスレッドからAzureデータレイクにストリーミングデータを書き込む方法はありますか?
答えて
あなたのデザインをもう一度考えてください。
1つのアプローチは、複数のファイルをData Lakeに書き込むことです.1つはスレッドごとに1つです。 Data Lakeに入ると、USQLまたはPolyBaseを使用して、一連のファイルを1つのデータソースとして照会できます。あるいは、USQLジョブを編成して、それらが湖に入った後にファイルをマージすることもできます。これはローカル処理であり、正常に動作します。
AdlOutputStreamを使用することは、このような並列書き込みには適切なメカニズムではありません。 AdlOutputStreamは、単一のライターシナリオ用に設計されています。そこ複数のスレッドから並行してデータを摂取すると、通常我々が一般的に観察し、いくつかの特性です:
- あなたはスループットを最適化したいと(スレッド間)
- 注文は通常、 重要ではありませんスレッド間の同期を行いません
これらのタイプのシナリオに特に対応するために、Azure Data Lake Storeは、「並行追加」と呼ばれるユニークで高性能なAPIを提供します。ここで
は、このAPIを使用する方法を示します要点である:https://gist.github.com/asikaria/0a806091655c6e963eea59e89fdd40a9
方法は、当社のSDKにコアクラスで提供されています:https://azure.github.io/azure-data-lake-store-java/javadoc/com/microsoft/azure/datalake/store/Core.html
いくつかのポイントは、Azureのデータ湖ストアに固有に注意すること同時追加の実装:
- ファイル一度に同時アペンドで使用されている、あなたは一定のオフセットを使用することはできませんそれはPOSSであること
- に追加ファイル内に重複したデータが表示されることがあります。これは、エラーモードと自動再試行の副作用の可能性があります。
編集:もマレーFoxcraftからの回答は長い合理的なファイル・ローテーションポリシーでスレッドを実行するのに好適です。このアプローチで唯一の欠点は、1トンの小さなファイルで終わらないということです。
- 1. ストリーミングデータをAzureデータレイクに保存する方法は?
- 2. 複数のスレッドからsqliteにデータを書き込む最良の方法
- 3. Javaの複数のスレッドからFileOutputStreamに書き込む
- 4. 複数のスレッドからTraceListenerに書き込む
- 5. ルビにフルモジュールパスを書き込む方法はありますか?
- 6. 別のプロセスメモリに書き込む方法はありますか?
- 7. 複数のスレッドで複数のファイルを書き込む方法は?
- 8. C#からSystem.Drawing.GraphicsをPDFに書き込む方法はありますか?
- 9. Java mvcからスレッドに書き込む
- 10. Azure PowerShellを使用してAzure Storageに直接sqlcmd結果を書き込む方法はありますか?
- 11. 複数のスレッドを1つのファイルに書き込む方法は、あらかじめ定義されたセクションを(行番号で)書きますか?
- 12. 複数のスレッドで1つのファイルに書き込む方法は?
- 13. 複数のプロトコルバッファのメッセージを追加可能な圧縮ファイルに書き込む方法はありますか?
- 14. 複数のスレッドからランダムな順序でファイルに書き込む
- 15. 複数のスレッドで書き込みファイルを読み込む
- 16. ファイルにデータを書き込む別の方法はありますか?
- 17. 500エラーページのテストをRailsに書き込む方法はありますか?
- 18. Zend_Session_SaveHandler_DbTableを強制的にデータベースに書き込む方法はありますか?
- 19. WordPressでポストママをあらかじめ書き込む方法は?
- 20. Azure関数から非同期でファイルに書き込む
- 21. 同じファイルに複数のスレッドを書き込む
- 22. golangにhttps sever no certificateを書き込む方法はありますか?
- 23. コマンド自体を出力ファイルに書き込む方法はありますか?
- 24. Hadoop:HDFSに多次元配列を書き込む方法はありますか?
- 25. リモートネイティブC++サーバーにC#クライアントRPCを書き込む方法はありますか。
- 26. CのWindowsイベントログに書き込む方法はありますか?
- 27. Javaでバイトバッファの半分に書き込む方法はありますか?
- 28. Magentoモジュールを書き込む方が良い方法はありますか?
- 29. 関数から.csvファイルを書き込む方法は?
- 30. 複数の列にPyspark UDAFを書き込む方法は?
ガイダンスと要点をありがとう。私は過去2週間の答えを探していました。 – Dhinesh