【问题标题】:Issue when connecting from Spark 2.2.0 to MongoDB从 Spark 2.2.0 连接到 MongoDB 时出现问题
【发布时间】:2018-01-12 14:38:48
【问题描述】:

我的问题是关于使用官方连接器从 Apache Spark 连接到 MongoDB。

堆栈版本如下:

  • Apache Spark 2.2.0(HDP 构建:2.2.0.2.6.3.0-235
  • MongoDB 3.4.10(带身份验证的 2x 节点副本集)

我使用这些罐子:

问题在于版本对应,如herehere 所述。

他们都说,方法 was renamed 从 Spark 2.2.0 开始,所以我需要使用 2.2.0 版本的连接器 - 是的,here 是 spark 连接器 2.1.1 中的方法,并且here 在 2.2.0 中更名为 one

但我确信,我使用的是正确的。我做了这些步骤:

git clone https://github.com/mongodb/mongo-spark.git
cd mongo-spark
git checkout tags/2.2.0
sbt check
sbt assembly
scp target/scala-2.11/mongo-spark-connector_2.11-2.2.0.jar user@remote-spark-server:/opt/jars

所有测试都正常。之后我使用 pyspark 和 Zeppelin(所以部署模式是客户端)从 MongoDB 读取一些数据:

df = sqlc.read.format("com.mongodb.spark.sql.DefaultSource") \
    .option('spark.mongodb.input.uri', 'mongodb://user:password@172.22.100.231:27017,172.22.100.234:27017/dmp?authMechanism=SCRAM-SHA-1&authSource=admin&replicaSet=rs0&connectTimeoutMS=300&readPreference=nearest') \
    .option('collection', 'verification') \
    .option('sampleSize', '10') \
    .load()

df.show()

得到了这个错误:

Py4JJavaError: An error occurred while calling o86.load.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 4 times, most recent failure: 
Lost task 0.3 in stage 0.0 (TID 3, worker01, executor 1): java.lang.NoSuchMethodError:org.apache.spark.sql.catalyst.analysis.TypeCoercion$.findTightestCommonTypeOfTwo()Lscala/Function2;

我想我确定这个方法不在罐子里:TypeCoercion$.findTightestCommonTypeOfTwo()

我去SparkUI看看环境:

spark.repl.local.jars   file:file:/opt/jars/mongo-spark-connector-assembly-2.2.0.jar,file:/opt/jars/mongo-java-driver-3.6.1.jar

而且任何地方都没有不同的 MongoDB 相关文件。 请帮忙,我做错了什么?提前致谢

【问题讨论】:

    标签: mongodb apache-spark connector


    【解决方案1】:
    猜你喜欢
    • 2016-10-22
    • 2021-02-01
    • 1970-01-01
    • 2019-10-22
    • 2019-01-12
    • 1970-01-01
    • 2015-10-30
    • 2021-09-07
    • 2014-05-16
    相关资源
    最近更新 更多