Как передать константное значение в функцию карты в искровом скале - PullRequest
1 голос
/ 21 июня 2019
val SCHEMA : Schema = ....
dStream.map(b => deserialize(bytes))

def deserialize(b: Array[Byte]): GenericRecord = {
      new GenericDatumReader[GenericRecord](SCHEMA)
        .read(null, DecoderFactory.get().jsonDecoder(SCHEMA, new ByteArrayInputStream(b)))
  }

Мне нужно передать SCHEMA функции карты. Как я могу передать переменную SCHEMA в методе десериализации.

1 Ответ

0 голосов
/ 21 июня 2019

Используйте карри

deserialize(schema: Schema)(b: Array[Byte]): GenericRecord = { ... }
dStream.map(deserialize(SCHEMA))

или двоичную функцию:

def deserialize(b: Array[Byte], schema: Schema): GenericRecord = { ... }

dStream.map(b => deserialize(b, SCHEMA))
...