Я знаю, что вы ожидали бы кода для этого, но код выглядит хорошо, и я не могу понять, что происходит не так. Я бы объяснил проблему и посмотрим, можете ли вы сказать мне, не хватает ли я чего-то очевидного.Строка со схемой возвращает null для row.schema
Я написал неявный класс для , функция, в которой используется row.schema
для получения схемы. Что смешно, хотя row.schema
всегда возвращает null
в неявном классе, имеет ли объект строки схему или нет, тогда как то же самое возвращает фактическую схему в классе, содержащем модульный тест (я использую FlatSpec with Matchers
для модульного тестирования). Так строятся строки в модульном тесте.
val schema = StructType(
StructField("col1", StringType) ::
StructField("col2", DoubleType) ::
StructField("col3", IntegerType) ::
Nil)
val values = Array("value1", 1.0, 1)
val row: Row = new GenericRowWithSchema(values, schema)
проверить источник в Спарк кодовой базы, и это, как реализуется функция schema
.
def schema: StructType = null
который меня смутил еще дальше. Любые указатели?
Редактировать: Я должен был знать, что код не очень помогает. Итак, вот код. Проверьте getAsOpt[T](i)
(here) и getAsOpt[T](fieldName)
(here) в this code на и соответствующие тесты here.
Вот как те, которые терпят неудачу, терпят неудачу,
[info] - getAsOpt[T]() can get values using field names. *** FAILED *** (8 milliseconds)
[info] None was not equal to Some("value1") (RowTest.scala:85)
...
[info] - getAsOpt[T] retrieves an Optional value if the fieldName exists else returns None *** FAILED *** (1 millisecond)
[info] None was not equal to Some("value1") (RowTest.scala:91)
...
[info] - getAsOpt[T] retrieves an Optional value if class cast is successful else returns None *** FAILED *** (0 milliseconds)
[info] None was not equal to Some("value1") (RowTest.scala:97)
[A Minimal, полный и Проверяемость пример] (http://stackoverflow.com/ help/mcve). Трудно понять, в чем проблема, не говоря уже о воспроизведении. – zero323
@ zero323 Добавлен код. – aa8y