2017-12-21 5 views
0

IgniteRDDを使用して、キャッシュレイヤーとしてigniteを導入することでspark sqlクエリを高速化しようとしています。 ignite docの例では、ignite cacheからデータをロードしてRDDを構築します。しかし、私たちのユースケースでは、データサイズが大きすぎてメモリを起動できない場合があります。実際にはhbaseにデータを入れます。 1、hbaseからデータをロードしてigniteRDDを構築します。 2、 spark sqlによって生成されたrddを共有し、spark sqlを高速化します。Igniteを使用したSpark SQL

答えて

1

2つの使用シナリオがあります。

最初のアプローチ。 igniteRdd.sql(...)メソッドを使用してSparkからIgnite SQLクエリを実行する場合は、すべてのデータをIgniteクラスタに格納する必要があります。 Ignite SQLエンジンは、すべてのデータがメモリにキャッシュされていない場合、基礎となるサードパーティのパーシスタンスレイヤを照会できません。しかし、Ignite persistenceを有効にしてHBaseの代わりにすべてのデータを保存すれば、Igniteが独自の永続性を照会できるので、できるだけ多くのデータをキャッシュしてSQLを安全に実行できます。

2番目の方法は、cache storeとしてHBaseを使用し(Ignite SQLの代わりに独自のバージョンを実装する必要があります)、Ignite SQLではなくSpark SQLクエリを使用します。これは、後者ではすべてのデータIgnite持続性が使用されていない場合はRAMに格納されます。

第3のアプローチは、Ignite in-memory file system (IGFS)Hadoop acceleratorを試してみることです。 IGFSとアクセラレータはHDFSの上に配備されています。ただし、IgniteRDDs APIを使用することはできません。これは、すべての操作がこのパイプラインSpark-> HBase-> IGFS + Accelerator + HDFSを経由するためです。

私が選択すれば、私は最初のアプローチに行きます。

+0

大きな感謝!これらの3つのアプローチはすべて埋め込みモードをサポートしていますか? –

+0

@Jerometan、はい、絶対に!ただし、Igniteの開発者は、Igniteノードが純粋なクライアントでない限り、組み込みモードの使用をお勧めしません。https://issues.apache.org/jira/browse/IGNITE-7092 – dmagda

関連する問題