pyspark mongodb集合读取命令赢得';不执行

pyspark mongodb集合读取命令赢得';不执行,mongodb,apache-spark,pyspark,Mongodb,Apache Spark,Pyspark,我已安装以下版本:- spark 2.1.0, scala 2.11.6, mongoDB 3.2.17 我尝试用以下命令启动pyspark shell ./bin/pyspark --packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.0 在此之后,我开始spark课程,如下所示 from pyspark.sql import SparkSession my_spark = SparkSession.builder.appNam

我已安装以下版本:- spark 2.1.0, scala 2.11.6, mongoDB 3.2.17

我尝试用以下命令启动pyspark shell

./bin/pyspark --packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.0
在此之后,我开始spark课程,如下所示

from pyspark.sql import SparkSession
my_spark = SparkSession.builder.appName("myApp").config("spark.mongodb.input.uri", "mongodb://127.0.0.1/mycollection.dummy").config("spark.mongodb.output.uri", "mongodb://127.0.0.1/mycollection.dummy").getOrCreate()
我在mongodb中执行了对集合的写入,它正在成功执行

但是,当我尝试使用命令读取集合时

df = my_spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri","mongodb://127.0.0.1/mycollection.dummy").load()
它显示如下错误

from pyspark.sql import SparkSession
my_spark = SparkSession.builder.appName("myApp").config("spark.mongodb.input.uri", "mongodb://127.0.0.1/mycollection.dummy").config("spark.mongodb.output.uri", "mongodb://127.0.0.1/mycollection.dummy").getOrCreate()
17/10/13 10:43:33错误执行器。执行器:第2.0阶段(TID 2)任务0.0中的异常
java.lang.NoSuchMethodError:org.apache.spark.sql.catalyst.analysis.TypeImpression$.findTightestCommonType()Lscala/Function2;
位于com.mongodb.spark.sql.MongoInferSchema$.com$mongodb$spark$sql$MongoInferSchema$$compatibleType(MongoInferSchema.scala:135)
位于com.mongodb.spark.sql.MongoInferSchema$$anonfun$3.apply(MongoInferSchema.scala:78)
位于com.mongodb.spark.sql.MongoInferSchema$$anonfun$3.apply(MongoInferSchema.scala:78)
在scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply处(TraversableOnce.scala:157)
在scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply处(TraversableOnce.scala:157)
位于scala.collection.Iterator$class.foreach(Iterator.scala:893)
位于scala.collection.AbstractIterator.foreach(迭代器.scala:1336)
位于scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:157)
位于scala.collection.AbstractIterator.foldLeft(Iterator.scala:1336)
位于scala.collection.TraversableOnce$class.aggregate(TraversableOnce.scala:214)
位于scala.collection.AbstractIterator.aggregate(Iterator.scala:1336)
在org.apache.spark.rdd.rdd$$anonfun$treeaggreegate$1$$anonfun$24.apply上(rdd.scala:1135)
在org.apache.spark.rdd.rdd$$anonfun$treeaggreegate$1$$anonfun$24.apply上(rdd.scala:1135)
在org.apache.spark.rdd.rdd$$anonfun$treeAggegate$1$$anonfun$25.apply上(rdd.scala:1136)
在org.apache.spark.rdd.rdd$$anonfun$treeAggegate$1$$anonfun$25.apply上(rdd.scala:1136)
位于org.apache.spark.rdd.rdd$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(rdd.scala:796)
位于org.apache.spark.rdd.rdd$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(rdd.scala:796)
在org.apache.spark.rdd.MapPartitionsRDD.compute上(MapPartitionsRDD.scala:38)
在org.apache.spark.rdd.rdd.computeOrReadCheckpoint(rdd.scala:323)上
位于org.apache.spark.rdd.rdd.iterator(rdd.scala:287)
位于org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
位于org.apache.spark.scheduler.Task.run(Task.scala:99)
位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:282)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

在java.lang.Thread.run(Thread.java:748)

中,数据帧读取行似乎不一致。首先,您初始化my_spark,然后使用
spark
。您还可以使用
“uri”
,而不是
“spark.mongodb.input.uri”
。请尝试以下操作:

df = my_spark.read.format("com.mongodb.spark.sql.DefaultSource").option("spark.mongodb.input.uri","mongodb://127.0.0.1/mycollection.dummy").load()

否则,请提供更多代码以作为一个整体进行检查。

抱歉,发布时出错。我只用我的火花,不是火花。我会在帖子中编辑它,这似乎是py4j的错误。我重新安装了它,现在它似乎工作良好。无论如何,谢谢。请发布您的解决方案!我也有同样的问题!哈哈,我确实使用了
spark
vs
my_spark
,但不幸的是错误依然存在(齐柏林飞艇)。完全相同的命令在主机上的pyspark中工作。。。