我正在尝试将 spark (pyspark) 连接到 mongodb,如下所示:
conf = SparkConf()
conf.set('spark.mongodb.input.uri', default_mongo_uri)
conf.set('spark.mongodb.output.uri', default_mongo_uri)
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
spark = SparkSession \
.builder \
.appName("my-app") \
.config("spark.mongodb.input.uri", default_mongo_uri) \
.config("spark.mongodb.output.uri", default_mongo_uri) \
.getOrCreate()
Run Code Online (Sandbox Code Playgroud)
但是当我执行以下操作时:
users = spark.read.format("com.mongodb.spark.sql.DefaultSource") \
.option("uri", '{uri}.{col}'.format(uri=mongo_uri, col='users')).load()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
java.lang.ClassNotFoundException:找不到数据源:com.mongodb.spark.sql.DefaultSource
我从 pyspark shell 做了同样的事情,我能够检索数据。这是我运行的命令:
pyspark --conf "spark.mongodb.input.uri=mongodb_uri" --conf "spark.mongodb.output.uri=mongodburi" --packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.2
Run Code Online (Sandbox Code Playgroud)
但是在这里我们可以选择指定我们需要使用的包。但是独立的应用程序和脚本呢?我如何在那里配置 mongo-spark-connector。
有任何想法吗?