2016-05-18 15 views
1

私は経験豊富なRDBMDの開発者と管理者です。しかし、私はApache CassandraとSparkには新しいです。私はCassandraのCQLを学びました。ドキュメントでは、Cassは結合されたデータ性質のためにCassandraではあまりにも非効率なので、CQLは結合とサブクエリをサポートしていません。Apache Cassandra and Spark

したがって、分散データ環境では、ジョインとサブクエリはパフォーマンスに悪影響を与えるため、サポートされていないと結論づけました。

しかし、Sparkは分散データでも動作しますが、Sparkは結合やサブクエリを含むすべてのSQL機能をサポートしています。 Sparkはデータベースシステムではないのでインデックスも持っていませんが...私の質問は、Sparkが分散データの結合とサブクエリをどのようにサポートしているのですか?それは効率的ですか?

ありがとうございます。

答えて

1

Apache sparkには、メモリに作成されるRDD(Resilient Distributed DataSet)という概念があります。

それは基本的にはスパークの基本的なdata structureです。

Joins, queriesがこのRDDで実行され、memoryで動作するので、その理由は非常に効率的です。

スパークが分散されたデータに参加を行うために必要な「ハードワーク」を行い

http://spark.apache.org/docs/latest/programming-guide.html#resilient-distributed-datasets-rdds 
2

弾力性のデータセットにいくつかのアイデアを得るために、以下のドキュメントを通過してください。実際に結合を実行する前に、大きなシャッフルを実行してデータをキーに整列させます。基本的には、結合に使用されたキーに基づいて元のデータソースが分割されていないかぎり、どのような結合でも非常に大量のデータ移動が必要になります。

C *ではコストがかかりますので、OLTPワークロードに合わせており、完全なデータシャッフルは本質的にOLAPである必要があります。

関連する問題