[英]Get Hashtable/Map from Spark Dataframe Column stored as binary(serialized Hashtable) in SQL Server 2016 using Apache Spark 2.4
在其中一个遗留应用程序中,在 DB - SQL Server 2016 中,我们有一个表 - 度量
它有 15+ 列,其中一列是二进制的
当我加载到 Spark 并打印架构时,它的二进制文件
scala> jdbcDF.printSchema()
root
|-- measurementValues: binary (nullable = true)
|-- measure: string (nullable = true)
看起来,他们使用了Hashtable ,将其序列化并作为二进制存储到 Table Column 中
我正在尝试将相同的反序列化回哈希表(或)映射(或)某些集合,以便在执行 ETL 操作时能够转换为 JSON 格式
有人可以帮忙吗? 我试图将二进制文件转换为字符串,但仍然没有用:(
val convertToString = udf((a: Array[Byte])=> new String(a))
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
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.