2017-06-22 5 views
0

私はこれらのレコードに何らかの処理を行うと、ファイルに処理されたレコードを書き込み、その後、Oracleデータベースからレコードの数百万人(約5万人)読んでする必要があり、Apache Sparkは、Oracle DBから数百万のレコードを読み込み、ファイルに書き込む処理を高速化できますか?

アパッチ・スパークに新しいです。現在

が、これはJavaで行われ、このプロセス で - Javaプロセスでは、4つのスレッドが並列 で実行されている - DB内のレコードは、いくつかのデータ基準 に基づいて、異なるサブ・セットに分類されています - 各スレッドはレコードのサブセットを読み取り、処理したレコードを新しいファイル に書き込みます。最後に、これらのファイルをすべて1つのファイルにマージします。

まだ全プロセスを完了するのに約30分かかります。

Apache SparkがこのプロセスをOracle DBから数百万のレコードを高速に読み取り、処理してファイルに書き込めるようにするにはどうすればいいですか?

Sparkがこのプロセスを高速化できる場合、プロセスでこれを実装するための最良のアプローチは何ですか?また、クラスタ化されていない環境でも有効でしょうか?

ヘルプを評価してください。

+2

なぜPL/SQLで処理しないのですか?少なくとも1つの不必要なI/Oのチャンクを削除する – APC

+0

現在の設定の制限はどこで測定されましたか?それはあなたのjavaアプリの処理速度か、むしろDBからのシーク/転送速度ですか? – maasg

答えて

-1

ええ、それは分散処理のために構築されたスパークを使用して行うことができます! http://spark.apache.org/docs/latest/sql-programming-guide.html#jdbc-to-other-databases

これを実現するには、適切に構成されたスパーククラスタを使用する必要があります。パフォーマンスは、必要に応じてより多くのワーカーノードを追加することによって微調整する必要があります。

関連する問題