Как работать с нулевыми значениями в классах случаев Scala во Flink? - PullRequest
0 голосов

Здравствуйте, я читаю данные JSON из S3 с помощью Flink, затем анализирую входные данные для класса наблюдения.Проблема заключается в том, что когда строка JSON имеет какое-либо нулевое значение, класс case не принимает его, поскольку каждое поле класса case имеет тип (Int, String и т. Д.).

При поиске решения я обнаружил, что могуиспользуйте Option, чтобы включить нулевые значения в класс case, и это работает, но проблема возникает, когда я пытаюсь выполнить запрос после преобразования из набора данных в таблицу.

Если я пытаюсь получить строки, в которых оценка равна нулю,Я ничего не получил, потому что Option Type представляет объект.

//Case class that I used to parse a JSON
case class TestTableSchema(
    id: String,
    score: Option[Double]
)

val data: Dataset[TestTableSchema] = ...

tableEnv.registerDataSet("test_table", data)

val result = tableEnv.sqlQuery("""
    |SELECT *
    |FROM test_table
    |WHERE score IS NULL
    """.stripMargin
)

Также я проверил, что могу использовать тип данных Row вместо класса case, который принимает нулевые значения, но я не нашел какого-либо примера дляреализовать его.

Как я могу обрабатывать нулевые значения, когда я хочу иметь схему?

...