Как настроить Anaconda для использования спарк-кассандра-коннектора в Scala Jupyter Notebook - PullRequest
0 голосов
/ 28 ноября 2018

Я бы хотел получить доступ к Кассандре, используя scala в блокноте Jupyter.Чтобы работать с DataFrames, мне нужно использовать разъем spark-cassandra для scala.

Это исключение, которое возникает:

java.lang.ClassNotFoundException: Failed to find data source:org.apache.spark.sql.cassandra. Please find packages at  http://spark.apache.org/third-party-projects.html
at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSo urce.scala:635)
at   org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:190)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:164)
... 37 elided
Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.cassandra.DefaultSource

Среда:

  • Анаконда: 3.5.2
  • Версия Conda: 4.5.11
  • Pyspark: 2.3.1
  • Python: 3.7.1
  • spark-cassandra-connector 2.3.1

На основании документации эта команда была выполнена в терминале anaconda для конкретного env:

spark-shell  --packages datastax:spark-cassandra-connector:2.3.1-s_2.11  \
  --conf "spark.cassandra.connection.host=127.0.0.1" \
  --conf "spark.cassandra.auth.username=cassandra" \
  --conf "spark.cassandra.auth.password=cassandra"

Я пробовал в разных формах, но не смогвыполните команду tho spark-submit

Код для ноутбука Jupyter с scala (spylon):

import org.apache.spark.ml.feature.Word2Vec;
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.sql.SQLContext
val sqlContext = new SQLContext(sc)
val df = sqlContext.read
  .format("org.apache.spark.sql.cassandra")
  .options(Map( "table" -> "article", "keyspace" -> "spike"))
  .load()
df.show()

Также попытался настроить контекст без успеха:

val conf = new SparkConf()//true
.set("spark.cassandra.connection.host", "127.0.0.1")
.set("spark.cassandra.auth.username", "cassandra")
.set("spark.cassandra.auth.password", "cassandra")
//.set("spark.driver.allowMultipleContexts", "true")
.setAppName("app")
.setMaster("local[*]")//[2]
//.set("spark.ui.port", "44040")

val sc = new SparkContext(conf)//SparkContext.getOrCreate(conf)
val sqlContext = new SQLContext(sc)

Как правильно настроить разъем spark-cassandra для scala для правильной работы в ноутбуке Jupyter (Anaconda)?

...