簡體   English   中英

使用 Apache Spark 2.4 從在 SQL Server 2016 中存儲為二進制(序列化哈希表)的 Spark 數據幀列獲取哈希表/映射

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM