Получить Hashtable / Map из Spark Dataframe Столбец, сохраненный как двоичный файл (сериализованный Hashtable) в SQL Server 2016 с использованием Apache Spark 2.4 - PullRequest
0 голосов
/ 18 января 2020

В одном из устаревших приложений, в БД - SQL Server 2016, у нас есть таблица - показатели

, в ней более 15 столбцов, один из столбцов - , двоичный

enter image description here

Когда я загружаю в Spark и печатаю схему, ее двоичный файл

scala> jdbcDF.printSchema()
root
 |-- measurementValues: binary (nullable = true)
 |-- measure: string (nullable = true)

Похоже, они использовали Hashtable , сериализовали его и сохранили в столбце таблицы как двоичный файл


Я пытаюсь десериализовать его обратно в Hashtable (или) Map (или) Some Collection можно преобразовать в JSON формат при выполнении операций ETL

Может кто-нибудь помочь здесь? Я пытался преобразовать двоичный файл в строку, но по-прежнему бесполезно: (

val convertToString = udf((a: Array[Byte])=> new String(a))

enter image description here

1 Ответ

0 голосов
/ 31 января 2020
  def deserializeBinary = udf((x: Array[Byte]) => {
    val stream: InputStream  = new ByteArrayInputStream(x);
    val obs = new ObjectInputStream(stream)
    val stock = obs.readObject.asInstanceOf[util.Hashtable[String, String]]
    stock
  })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...