Есть ли какой-либо метод для использования с Pyspark для чтения коллекции MongoDB как RDD, а НЕ как dataframe?

#mongodb #apache-spark #pyspark

#mongodb #apache-spark #pyspark

Вопрос:

Я использую Pyspark для доступа к Mongo. Моя задача довольно проста: экспортировать Mongo в hdfs. Вот мой код:

 spark = SparkSession 
    .builder.appName("Mongodb-Exporter") 
    .config("spark.mongodb.input.uri", "xxx") 
    .config("spark.mongodb.input.database","xx") 
    .config("spark.mongodb.input.collection","xx") 
    .getOrCreate()

df = spark.read.format("com.mongodb.spark.sql.DefaultSource").load()
df.write.format("json").save(sys.argv[1])
spark.stop()
  

Все работает хорошо, пока я не столкнусь с этой проблемой:

 com.mongodb.spark.exceptions.MongoTypeConversionException: 
 Cannot cast STRING into a ArrayType(StringType,true) (value: BsonString{value=''})
  

Это произошло потому, что в моей коллекции есть поле, которое имеет несколько типов значений, например

 document1:{"name":"ross"};
document2:{"name":["joey","monica"]}
  

Я в замешательстве. Могу ли я каким-либо образом прочитать Mongo и вернуть RDD? Мне не нужен dataframe, мне все равно его схема, но, похоже, dataframe сильно заботится.

P.S: Я знаю, что Java или Scala могли бы это сделать, но как мне поступить с Pyspark? Я новичок в StackOverflow, надеюсь, что кто-нибудь сможет мне помочь, спасибо!