#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, надеюсь, что кто-нибудь сможет мне помочь, спасибо!