Apache spark 修改jupyter内核以在spark中添加cassandra连接

Apache spark 修改jupyter内核以在spark中添加cassandra连接,apache-spark,cassandra,pyspark,jupyter-notebook,Apache Spark,Cassandra,Pyspark,Jupyter Notebook,我有一个使用PySpark的Jupyter内核 >cat kernel.json {“argv”:[“python”、“-m”、“sparkmagic.kernels.pysparkkernel.pysparkkernel”、“-f”、“{connection_file}”], “显示名称”:“PySpark” } 我想修改这个内核以添加到cassandra的连接。在脚本模式下,我键入: pyspark\ --软件包anguenot:pyspark cassandra:0.7.0\ --con

我有一个使用PySpark的Jupyter内核

>cat kernel.json
{“argv”:[“python”、“-m”、“sparkmagic.kernels.pysparkkernel.pysparkkernel”、“-f”、“{connection_file}”],
“显示名称”:“PySpark”
}
我想修改这个内核以添加到cassandra的连接。在脚本模式下,我键入:

pyspark\
--软件包anguenot:pyspark cassandra:0.7.0\
--conf spark.cassandra.connection.host=12.34.56.78\
--conf spark.cassandra.auth.username=cassandra\
--conf spark.cassandra.auth.password=cassandra
脚本版本工作得非常好。但我想在Jupyter也这样做。

我应该在内核的什么地方输入这些信息?我已经试过两种方法:

{“argv”:[“python”、“-m”、“sparkmagic.kernels.pysparkkernel.pysparkkernel”、“-f”、“{connection_file}”],
“显示名称”:“带卡桑德拉的Pypark”,
“spark.jars.packages”:“anguenot:pyspark cassandra:0.7.0”,
“spark.cassandra.connection.host”:“12.34.56.78”,
“spark.cassandra.auth.username”:“cassandra”,
spark.cassandra.auth.password:“cassandra”
}

{“argv”:[“python”、“-m”、“sparkmagic.kernels.pysparkkernel.pysparkkernel”、“-f”、“{connection_file}”],
“显示名称”:“带卡桑德拉的Pypark”,
“PYSPARK_SUBMIT_ARGS”:”--包anguenot:PYSPARK cassandra:0.7.0--conf spark.cassandra.connection.host=12.34.56.78--conf spark.cassandra.auth.username=cassandra--conf spark.cassandra.auth.password=cassandra”
}
他们都没有工作。当我执行:

sqlContext.read\
.format(“org.apache.spark.sql.cassandra”)\
.options(table=“my\u table”,keyspace=“my\u keyspace”)\
.load()
我收到错误
java.lang.ClassNotFoundException:未能找到数据源:org.apache.spark.sql.cassandra



仅供参考:我不是在笔记本中创建Spark会话。启动内核时,
sc
对象已经存在。

spark.jars.*
选项必须在启动之前配置
SparkContext
已初始化。发生这种情况后,配置将不起作用。这意味着您必须执行以下操作之一:

  • 修改
    SPARK\u HOME/conf/SPARK defaults.conf
    SPARK\u conf\u DIR/SPARK defaults.conf
    并确保启动内核时
    SPARK\u HOME
    SPARK\u conf\u DIR
    在范围内
  • 使用中所述的相同方法修改内核初始化代码(其中,
    SparkContext
    已初始化)

我还强烈建议

@user8371915“可能的重复”没有回答我的问题,因为我没有从笔记本中创建Spark会话,因为答案是这样的……在会话初始化之前必须包含程序包。在哪里初始化并不重要,同样的方法也适用。在创建会话对象之后设置的配置选项根本无效。@user8371915好的,所以我尝试了:`spark=SparkSession.builder.appName('my_awesome')\.config(“spark.jars.packages”,“anguenot:pyspark cassandra:0.7.0”)\.config(“spark.cassandra.connection.host”,“12.34.56.78”)\.config(“spark.cassandra.auth.username”,“cassandra”)\.config(“spark.cassandra.auth.password”,“cassandra”)\.getOrCreate()spark.read\.format(“org.apache.spark.sql.cassandra”)\.options(table=“my\u table”,keyspace=“my\u keyspace”)\.load()java.lang.ClassNotFoundException:未能找到数据源:org.apache.spark.sql.cassandra。`
getOrCreate
将使用现有的
SparkContext
。在使用任何spark对象之前,您必须设置配置(确切地说,在JVM启动之前)。就我个人而言,我只想使用Spark配置,然后继续。在内核中的任何位置对其进行硬编码似乎是个坏主意。@user8371915这就是我需要在jupyter内核中输入参数的原因…因为jupyter会自动初始化SparkContext。在此之前,我无法输入任何内容。因此,您给我的答案是否定的这不是我需要的。