Я читаю коллекцию MongoDB с Mon go -Spark Connector (через Zeppelin), используя Java.
val DataFrame = MongoSpark.load(sc, readConfig).toDF[Object]()
Я использую класс Object как представление сущности MongoDB:
case class Object(
field1: Integer,
field2: Boolean,
...
)
В MongoDB объект хранится как BSON:
{
"_id": NUUID,
"field1": 1,
"field2": true
}
Проблема : при чтении данных Mon go -Spark-соединитель пропускает объекты, которые не ' t иметь все поля, указанные в классе Object.
Таким образом, элементы go, такие как {"id": NUUID, "field1": 2}
, не загружаются в DF.
Полагаю, я могу прочитать все объекты, такие как BSON-объекты, и сериализовать их после чтения в DF, но Есть ли другое решение, которое поможет не делать лишнюю работу? Т.е. сделать поля класса необязательными (Option(Integer)
)
Что используется:
- mon go -spark-connector_2.11
- spark-2.4.0