1

この話のさまざまなアクター (PySpark、SparkSQL、Cassandra、および pyspark-cassandra コネクタ) と少し混乱しています。

私が理解しているように、Spark はかなり進化し、SparkSQL は現在 (「データフレーム」と共に) 重要なコンポーネントになっています。特に Cassandra に接続する場合は特に、SparkSQL なしで動作する理由はまったくないようです。

私の質問は次のとおりです。どのコンポーネントが必要で、それらを可能な限り簡単な方法で接続するにはどうすればよいですか?

Scalaではspark-shell簡単にできます

./bin/spark-shell --jars spark-cassandra-connector-java-assembly-1.6.0-M1-SNAPSHOT.jar

その後

import org.apache.spark.sql.cassandra.CassandraSQLContext
val cc = new CassandraSQLContext(sc)
cc.setKeyspace("mykeyspace")
val dataframe = cc.sql("SELECT count(*) FROM mytable group by beamstamp")

どうすればそれを行うことができpysparkますか?

ここに、私が収集した部分的な回答とともに、いくつかのサブ質問があります (間違っていれば修正してください)。

  • pyspark-casmandra が必要ですか (そうは思いません - そもそも何をしていたのかわかりません)

  • 使用する必要がありますpysparkか、それとも正規のものを使用jupyter notebookして必要なものを自分でインポートできますか?

4

2 に答える 2

3

Pyspark はspark-cassandra-connector、Spark Cassandra コネクタのpython docsで説明されているように、パッケージで開始する必要があります。

./bin/pyspark 
  --packages com.datastax.spark:spark-cassandra-connector_$SPARK_SCALA_VERSION:$SPARK_VERSION

これをロードすると、C* データフレームで Spark 内に既に存在するデータフレーム操作を使用できるようになります。C* データフレームを使用するオプションの詳細

これを実行するjupyter notebookように設定するには、次のプロパティを使用して環境を設定するだけです。

export PYSPARK_DRIVER_PYTHON=ipython
export PYSPARK_DRIVER_PYTHON_OPTS=notebook

そして呼び出すpysparkと、正しく構成されたノートブックが起動します。

pyspark-cassandraいくつかのパフォーマンスの落とし穴がある Python での RDD の使用に興味がない限り、使用する必要はありません。

于 2016-02-28T16:53:48.717 に答える
2

DataFramePython コネクタではAPIが公開されています。spark-cassandra-connectorが利用可能で、必要な構成が含まれている限りSparkConf、追加のパッケージは必要ありません。フォーマットとオプションを指定するだけです。

df = (sqlContext
    .read
    .format("org.apache.spark.sql.cassandra")
    .options(table="mytable", keyspace="mykeyspace")
    .load())

プレーン SQL を使用する場合はDataFrame、次のように登録できます。

df.registerTempTable("mytable")

## Optionally cache
sqlContext.cacheTable("mytable")

sqlContext.sql("SELECT count(*) FROM mytable group by beamstamp")

コネクタの高度な機能は、 Python には公開されていないため、機能CassandraRDDを超えたものが必要な場合に役立つ場合があります。DataFramepyspark-cassandra

于 2016-02-28T16:28:15.980 に答える