2016-05-06 11 views
0

あなたは私のnoobnessを許す必要がありますが、私はpythonスクリプトを実行しているcassandraに接続するスパーククラスターをセットアップしようとしています。現在、私はsolastr検索モードでcassandraを実行するためにdatastax enterpriseを使用しています。私は、datastaxが提供するspark-cassandraコネクタを使用するには、analyticsモードで-andkオプションを使用してcassandraを実行する必要があることを理解しています。現在、私はそれが私が次のステップに従っ動作させるために、そのために、DSEのスパークバージョンを使用して動作するようにそれを持っている:spark-cassandra-connectorを使用してsparkとcassandraを接続するにはどうすればいいですか?

  1. 分析モードでスタートDSEのカサンドラ
  2. 変更の$ PYTHONPATHのENV変数に/パス/to/spark/dse/python:/path/to/spark/dse/python/lib/py4j-*.zip:$PYTHONPATH
  3. rootとして実行スタンドアロンスクリプトのほかにpython test-script.py

と、私はドライバクラスを作成するjavaパッケージをインクルードしようとすると、sparkだけを使用して別のテストを行いました(dseバージョンではありません)。づけし、私がやった:

  1. ファイル火花-defaults.confに 2.execute $SPARK_HOME/bin/spark-submit —packages com.datastax.spark:spark-cassandra...
にspark.driver.extraClassPath = /path/to/spark-cassandra-connector-SNAPSHOT.jarを追加します。

SCは、ドライバがロードされたかどうかを確認するための方法cassandraTableを持っていたが、私は、次のエラーメッセージが表示されます両方のケースでは、うまくいかなかった場合、私はまたpysparkシェルとテストを実行してみました:

AttributeError: 'SparkContext' object has no attribute 'cassandraTable' 

を私の目標はあります私は何をすべきか? non-dseスパークバージョンをcassandraと接続し、ドライバからのメソッドを利用できるようにする

また、dseで実行されていないcassandraノードでdse spark-cassandraコネクタを使用できるかどうかを知りたい場合もあります。ここにあなたの助け

答えて

1

ため

おかげで非DSEのバージョンでカサンドラに火花シェルを接続する方法です。 spark/spark-hadoop-directory/jars/

spark-shell --jars ~/spark/spark-hadoop-directory/jars/spark-cassandra-connector-*.jar 

コピーspark-cassandra-connector瓶スパークシェルでこれらのコマンドを実行

sc.stop 
import com.datastax.spark.connector._, org.apache.spark.SparkContext, org.apache.spark.SparkContext._, org.apache.spark.SparkConf 
import org.apache.spark.sql.cassandra._ 
val conf = new SparkConf(true).set("spark.cassandra.connection.host", "localhost") 
val sc = new SparkContext(conf) 
val csc = new CassandraSQLContext(sc) 

あなたのカサンドラは、パスワードの設定などを持っている場合は、より多くのパラメータを提供する必要があります:)

1

を私はスタンドアロンのpythonスクリプトでpysparkを使用しています。私はDSEを使用せず、datastaxのgithubリポジトリからcassandra-spark-connectorをクローン化し、データストアinstrucctionsでコンパイルしました。

スパーク内のスパークコネクタにアクセスするために、スパークインストール内のjarsフォルダにコピーしました。

は、私はそれは同様にあなたのために良いことだと思う:私は私自身の経験は、環境設定の説明どこ

cp ~/spark-cassandra-connector/spark-cassandra-connector/target/full/scala-2.11/spark-cassandra-connector-assembly-2.0.5-86-ge36c048.jar $SPARK_HOME/jars/ 

あなたはthisを訪問することができました。

火花がカサンドラコネクタへのアクセスを持っていたら、ラッパーとしてpysparkライブラリを使用することができます:あなたはスクリプト全体を見ることができますexampleこの中

from pyspark import SparkContext, SparkConf 
from pyspark.sql import SQLContext, SparkSession 

spark = SparkSession.builder \ 
    .appName('SparkCassandraApp') \ 
    .config('spark.cassandra.connection.host', 'localhost') \ 
    .config('spark.cassandra.connection.port', '9042') \ 
    .config('spark.cassandra.output.consistency.level','ONE') \ 
    .master('local[2]') \ 
    .getOrCreate() 

ds = sqlContext \ 
    .read \ 
    .format('org.apache.spark.sql.cassandra') \ 
    .options(table='tablename', keyspace='keyspace_name') \ 
    .load() 

ds.show(10) 

関連する問題