在Python中从MongoDB GridFS加载Spark 2.x数据帧

在Python中从MongoDB GridFS加载Spark 2.x数据帧,python,mongodb,apache-spark,pyspark,gridfs,Python,Mongodb,Apache Spark,Pyspark,Gridfs,我正在使用pyspark sql和elephas下的keras 我想尝试使用mongoDB GridFS进行某种分布式图像处理 我在Scala上的Java世界中发现了相关的问题 但除此之外,我在pySpark中找不到任何其他关于如何使用GridFS的文档 我的pyspark-mongo代码如下所示: sparkConf = SparkConf().setMaster("local[4]").setAppName("MongoSparkConnectorTour")\

我正在使用pyspark sql和elephas下的keras

我想尝试使用mongoDB GridFS进行某种分布式图像处理

我在Scala上的Java世界中发现了相关的问题

但除此之外,我在pySpark中找不到任何其他关于如何使用GridFS的文档

我的pyspark-mongo代码如下所示:

sparkConf = SparkConf().setMaster("local[4]").setAppName("MongoSparkConnectorTour")\
                                             .set("spark.app.id", "MongoSparkConnectorTour")\
                                             .set("spark.mongodb.input.database", config.MONGO_DB)

# If executed via pyspark, sc is already instantiated
sc = SparkContext(conf=sparkConf)
sqlContext = SQLContext(sc)

dk = sqlContext.read.format("com.mongodb.spark.sql.DefaultSource")\
                    .option("spark.mongodb.input.uri", config.MONGO_MED_EVENTS)\
                    .load()

if (dk.count() > 0):
    # print data frame schema
    dk.printSchema()

    # Preview Dataframe (Pandas Preview is Cleaner)
    print( dk.limit(5).toPandas() )

有可能以这种方式处理GridFS数据吗?我想看一个简单的例子。

有一种方法可以将Scala代码转换为Pyspark

  • 从下载mongo-hadoop-core.jar

  • 运行包含jar的pyspark:

  • SPARK\u CLASSPATH=./path/to/mongo-hadoop-core.jar pyspark
    
  • 和翻译代码:
  • sc=SparkContext(conf=sparkConf)
    mongo_形态={
    “mongo.input.uri”:”mongodb://..."
    “mongo.input.query”:s“…mongo查询在此…”
    }
    rdd=sc.newAPIHadoopRDD(“com.mongodb.hadoop.GridFSInputFormat”,keyClass=“org.apache.hadoop.io.NullWritable”,valueClass=“org.apache.hadoop.io.MapWritable”,conf=conf)
    
    我对
    keyClass
    valueClass
    没有百分之百的把握,所以这里是我用来编译这段代码的源代码: