pyspark无法连接到mongoDB(已添加软件包,但无法正常工作)

时间:2019-05-28 05:20:18

标签: mongodb apache-spark pyspark pymongo

pyspark无法连接到mongoDB并读取数据。

  • 火花版本:2.4.3

这是我的代码:

> 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')

,我也不明白为什么会发生此问题?

您能给我一些建议吗?

编辑:解决方案

我解决了以下问题:

  1. 问题是 scala版本。大多数Spark随scala ver安装。 2.11除星火2.4.2

      

    Spark doc:请注意,Spark是用Scala 2.11预先构建的,但版本2.4.2是用Scala 2.12预先构建的。

  2. 我的这段代码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')

  3. 接下来,您可能会遇到Java问题。我建议您去https://mvnrepository.com/artifact/org.mongodb.spark/mongo-spark-connector_2.11/2.4.0,然后将文件下载到spark>jar

0 个答案:

没有答案