我是pyspark cassandra技术的新手,我在pyspark中找到了很多关于spark.sql的资源,我认为这很酷,但我仍然停留在与数据库的连接级别,因为我需要datastax提供的secure-bundle.zip来连接。所以,我要问的问题是:
我知道这是用pyspark shell连接到远程数据库的方法:
pyspark --packages com.datastax.spark:spark-cassandra-connector_2.11:2.5.1\
--files path_to/secure-connect-test.zip \
--conf spark.cassandra.connection.config.cloud.path=secure-connect-test.zip \
--conf spark.cassandra.auth.username=UserName \
--conf spark.cassandra.auth.password=Password \
--conf spark.dse.continuousPagingEnabled=false
我已经下载了 com.datastax.spark:spark-cassandra-connector_2.11:2.5.1
,所以我将这些jar复制到我的spark/jars文件夹中(对吗?)
然后,我的spark shell命令的结尾是:
pyspark --files path_to/secure-connect-test.zip \
--conf spark.cassandra.connection.config.cloud.path=secure-connect-test.zip \
--conf spark.cassandra.auth.username=UserName \
--conf spark.cassandra.auth.password=Password \
--conf spark.dse.continuousPagingEnabled=false
现在,我知道所有的pyspark代码都是用来控制spark的api,那么,上面的所有命令都可以用pyspark代码重写 --conf
我了解的参数与 .config(value, value)
:
sparkSession=SparkSession.builder.appName('SparkCassandraApp').config('spark.cassandra.connection.host', 'localhost')
所以,我的问题是,如何添加我的zip文件?
我已经看到了用pyspark代码将文件上传到spark会话的方法 SparkContext.addFile()
但是我很困惑,因为我必须在spark会话之前设置sparkcontext,所以我必须设置sparkcontext,添加我的文件,然后再次添加sparksession,即使我重复相同的值?或者我可以通过添加源路径在spark会话中添加bundle.zip文件吗?
请帮忙,我只想对spark及其工作方式有一个清晰的认识
谢谢
1条答案
按热度按时间kokeuurv1#
如果你用的是
--files
,然后spark将本地文件上载到集群,并使其对所有执行者可用,就像通过.addFile
. 在这种情况下,您可以通过spark.cassandra.connection.config.cloud.path
. 您不需要将文件复制到jars文件夹等-它可以放在下载的地方。正如我引用的博客文章中所描述的,文件也可以位于所有执行器都可以访问的任何位置,例如s3/hdfs/http/…-在这种情况下,
spark.cassandra.connection.config.cloud.path
可以直接指向该位置而不需要指定via--files
. 如果您将文件复制到所有执行者,则还可以使用该文件的完整路径作为file://path-to-secure-bundle