pyspark无法连接到mongoDB并读取数据。
这是我的代码:
> import findspark
> findspark.init('/home/downloads/spark')
> import pyspark
> from pyspark.sql import SparkSession
> spark = SparkSession\
.builder\
.master('local')\
.config('spark.mongodb.input.uri', 'mongodb://localhost:27017/test.customers')\
.config('spark.mongodb.output.uri', 'mongodb://localhost:27017/test.customers')\
.config('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.12:2.4.0')\
.getOrCreate()
> spark
>>
SparkSession - in-memory
SparkContext
Spark UI
Version
v2.4.3
Master
local[*]
AppName
myApp
,问题是:
> spark.read.format("com.mongodb.spark.sql.DefaultSource").load()
>>
Py4JJavaError: An error occurred while calling o748.load.
: java.lang.ClassNotFoundException: Failed to find data source: com.mongodb.spark.sql.DefaultSource. Please find packages at http://spark.apache.org/third-party-projects.html
即使检查了罐子包装.config('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.12:2.4.0')
您能给我一些建议吗?
编辑:解决方案
我解决了以下问题:
问题是 scala版本。大多数Spark随scala ver安装。 2.11除星火2.4.2
Spark doc:请注意,Spark是用Scala 2.11预先构建的,但版本2.4.2是用Scala 2.12预先构建的。
我的这段代码config('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.12:2.4.0')
是错误的,因为2.12
引用了scala ver 2.12,因此我像config('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.11:2.4.0')
spark>jar