データ取り込みの設定について

Four Stars

データ取り込みの設定について

はじめまして。suna_sukeと申します。

 

SQLサーバーからCSVに変換を行っていますが、多くのデータを早く変換するにはどのように設定すれば良いでしょうか。

現状は、1秒当たり175レコード(行)程度出力されていますが、1秒当たりでより多く出力したいと考えております。

データは1000万レコード

なお、パレットの設定については以下の通りです。

 

tDBConnection-tDBInput-tMaP-tFileOutputDelimited

 

以上です。宜しくお願いいたします。

Six Stars

Re: データ取り込みの設定について

こんにちは。

 

パフォーマンスチューニングはいつでも問題になりますよね。Talend でもよく問題になります。

ただ、スループットの向上には銀の弾丸はありません。

地道に調べて、それに対して手当てをする、という繰り返しが大切です。

 

1秒当たりでより多く出力したいと考えております。

 

ボトルネックがどこにあるかをまず切り分けてから対応するとよいかと思います。

現状は、tDBConnection-tDBInput-tMap-tFileOutputDelimited とのことですので、

  1. データベースからデータが出てくるのが遅い
  2. ネットワークの転送が遅い
  3. tMap 内の処理が遅い
  4. ファイルへの出力が遅い

という4パターンが考えられます。

 

4. については、tFixedFlowInput-tFileOutputDelimited として実行してみます。

このジョブでコンピュータのファイル書き込み性能を検証することができます。

とはいえ、Talend の中ではかなり高速な部類の出力ですので、セキュリティ関連のソフトが悪さをしない限り、問題になることは少ないでしょう。

 

3. については、tDBConnection-tDBInput-tFileOutputDelimited と tMap なしで実行してみます。

理想はありの状態と同じ「1秒当たり175レコード(行)」を少し上回る程度であることです。

ここで大きく差があると、データベースではなく tMap 内の変換処理のチューニングが必要です。

 

2. については、一旦飛ばして、1. については、SQL の見直しを行います。

スループットが向上する SQL のコツとしては、不要な項目を取得しない、DISTINCT や ORDER BY などファーストローの出力が遅くなる指定はしない、などがあります。

SQL Server Management Studio などで実行計画を確認するもよい手です。

 

それでも速くならないのなら、1., 2.をあわせて JDBC ドライバのオプションを見直します。

JDBCドライバごとにオプションは異なりますので、リファレンスを参考に設定します。ただし、これらの設定は諸刃の剣で、かえって遅くなったり、動作が不安定になったりすることがあります。ひとつずつ確認しながら設定することがおすすめです。

jTDS

http://jtds.sourceforge.net/faq.html#urlFormat

Microsoft

https://docs.microsoft.com/en-us/sql/connect/jdbc/setting-the-connection-properties?view=sql-server-...

 

ご参考になりましたら幸いです。

Four Stars

Re: データ取り込みの設定について

色々方法を教えて頂き、ありがとうございます。

地道に設定をいじってみてスループットが向上するか確認しようと思います。

Tutorial

Introduction to Talend Open Studio for Data Integration.

Definitive Guide to Data Integration

Practical steps to developing your data integration strategy.

Definitive Guide to Data Quality

Create systems and workflow to manage clean data ingestion and data transformation.