Mon go -Spark-соединитель пропускает объекты при чтении, если в записи нет полей - PullRequest
1 голос
/ 19 марта 2020

Я читаю коллекцию 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
...