2016-04-26 6 views
3

N台のマシンにN個のノードを持つCassandraクラスタを持っています。また、私はすべてのマシンに作業員を派遣しています。私はDatastax spark-cassandraコネクタを使用しています。私は労働者(スタンドアロンモード)を設定しているときに私は彼らのためのマスターホストと言う。ドライバでは、spark.cassandra.connection.hostプロパティでCassandraの種を指定しています。私はデータのローカリティに関する多くのプレゼンテーションを見ました。しかし、spark-cassandraコネクタが各作業者のローカルノードをどのように選択するかについての情報は見つかりませんでした。どのアルゴリズムコネクタがこれに使用しますか?スパークがcassandraノードを読み込みに選択する方法は?

答えて

0

コネクタはトークン対応です。実行するクエリにtoken("partition-key") > ? AND token("partition-key") <= ?などのトークン範囲フィルタを追加することで、データの局所性を保証します。

コネクタは、各スパークパーティション内のデータの64メガバイトについてロードするクエリを生成するためのパラメータspark.cassandra.input.split.size_in_mb(64メガバイトのデフォルト)(token(...) >? AND token(...)< ?)を使用しています。

+0

しかし、どのように作業員が正確にデータを読み取る必要があることを理解しているのですか?それはどのように地方のカサンドラ節を認識していますか? – Cortwave

+0

ドライバがCassandraクラスタへの初期接続を確立しています。 Cassandraのトポロジーとトークンの分布を検出します。私は次に、データの局所性についてどのような作業者にどのようなクエリを生成するかを知るために、作業者IPをCassandra IPにマッチさせることを前提としています。 –