2013-06-14 7 views
13

CQLとメモリ内クエリエンジンSpark/Sharkの使用に関するあなたの考えと経験を聞きたいと思います。私が知っているところから、CQLプロセッサは各ノードのCassandra JVMの中で動作しています。 Cassandraクラスタに添付されたShark/Sparkクエリプロセッサが、分離したクラスタ内で外部で実行されています。また、Datastaxには、Hadoop/Hiveのデプロイを可能にするCassandraのDSEバージョンがあります。問題は、どちらのユースケースでは、他のソリューションではなく特定のソリューションを選択することです。CassとSpark/Sharkのクエリ対Hive/Hadoop(DSEバージョン)の比較

答えて

31

私は私の経験に基づいていくつかの考えを共有します。しかし、可能であれば、あなたのユースケースについてお知らせください。より良い方法でクエリに答えるのに役立ちます。

1-読み込みよりも書き込みが多い場合は、明らかにCassandraが良い選択です。あなたがSQLのバックグラウンドから来て、Cassandraを使用する予定があるなら、CQLが非常に役立つことは間違いありません。しかし、JOINやGROUP BYのような操作を実行する必要がある場合、CQLは書き込み時間とコンパクト時間ソートを使用してプリミティブなGROUP BYユースケースを解決し、1対多の関係を実装しますが、CQLは答えではありません。

2 Spark SQL(以前のShark)は、メモリ内の処理と計画のデータパイプラインの2つの理由から非常に高速です。メモリ内処理により、Hiveより100倍高速です。 Hiveと同様に、Spark SQLはメモリデータ型よりも大規模で、計画パイプラインのおかげで最大10倍高速に処理します。 Spark SQLには、filterやgroupByのような複数のデータパイプラインが存在する場合の利点があります。アドホックなリアルタイムクエリーが必要なときは、それを実行してください。膨大な量のデータに対して長時間実行されるジョブが必要な場合には適していません。

3-ハイブは、基本的に、既存のHadoopクラスタの上で実行され、データを処理するSQLのようなインターフェイスを提供するウェアハウスです。しかし、Hiveはリアルタイムのニーズには適していません。オフラインバッチ処理に最適です。基礎となるHDFSをデータストレージとして使用するため、追加のインフラは必要ありません。大規模なデータセットやOLAPのJOIN、GROUP BYなどの操作を実行する必要があるときには、それを行ってください。

Note : Spark SQLはSpark上でApache Hiveの動作をエミュレートするため、ほぼすべてのHive機能をサポートしますが、潜在的に高速です。既存のハイブクエリ言語、ハイブデータ形式(SerDes)、ユーザー定義関数(UDF)、および外部スクリプトを呼び出すクエリをサポートしています。

しかし、あなたは手を汚した後にのみ、これらのツールの長所と短所を適切に評価できると思います。私はちょうどあなたの質問に基づいて提案することができます。

これは、あなたの質問のいくつかにお答えしたいと考えています。

P.S. :上記の答えは、私の経験だけに基づいています。コメント/修正は大歓迎です。ここに文書化されたベンチマークのための非常に良い努力がある

+4

がdownvoteの理由を与える、私は5歳のようにこれを行わないspirit..Justでそれを受け入れるだろう。 – Tariq

+1

謝罪、それは意図的ではありませんでした。私は今日もまたチェックインするまで私がそれをしたことに気付かなかった。 – Gavin

+0

-1 Spark SQL(旧Shark)は、Sparkの上でSQLからRDDへの操作をコンパイルし、HadoQLの上で操作をマップして減らすのではなく、HiveQLからSparkのRDD操作をコンパイルする機能を提供します。また、Sparkはメモリ内だけでなく、ディスクに10倍高速にページングされたデータセットを処理します。 –

関連する問題