SparkStreamingContextがドライバーに作成され、それをシリアル化することはできませんから、カサンドラにSparkStreamingからデータを保存することです。したがって、私たちは労働者のこのオブジェクトにアクセスすることはできません。スパークの分散された性質を利用するために、私たちは労働者のデータ/ストリームを処理していました。したがって、OOMを提供する可能性のあるすべてのデータをドライバに収集するのではなく、作業者から直接データを保存することが理にかなっています。は、それが実現可能なスパーク労働者
私は私はいくつかのビジネス・ロジックを適用する必要があり、最終的にはカサンドラにデータを格納する必要があり、このようなシナリオを持っています。だから、どうやってやるの?
DStream.foreachRDD{ x => x.foreachPartition { some logic and finally Store the data to cassandra } }
saveToCassandraは、仕事をする必要があります。しかし、データをローカルに保存するか、クラスタ内の別のマシンに保存するかは、データがどのノードに属しているかによって決まります。私も同様の問題に取り組んでいます。 – Sreekar
@Sreekar私はScalaの2.10とSpark1.6に取り組んでいます。だから、どのようにそこに使用することはできませんforeachRDDの理由であることスパークコンテキスト内のカサンドラへの接続を作成することができるだろう。 – Naresh
ストリーミングコンテキストオブジェクトでsparkContextを取得します。それは利用可能です。例えば:RDDのssc.sparkContext.cassandraTable()またはsaveToCassandraが動作するはずです。必要に応じて、sparkContextでホスト名とポートなどを設定できます。 – Sreekar