Skip to content

Instantly share code, notes, and snippets.

@metasim
Last active May 20, 2017 17:07
Show Gist options
  • Select an option

  • Save metasim/1faa4b21a49f12c2fef51ebea890bf47 to your computer and use it in GitHub Desktop.

Select an option

Save metasim/1faa4b21a49f12c2fef51ebea890bf47 to your computer and use it in GitHub Desktop.
package org.apache.spark.sql.gt
import ...
class TileUDT extends UserDefinedType[Tile] {
override val typeName = "st_tile"
override def userClass = classOf[Tile]
override def sqlType = StructType(Seq(StructField(typeName + "_kryo", BinaryType)))
override def serialize(obj: Tile) =
Option(obj).map(t ⇒ KryoSerializer.serialize(t)).map(k ⇒ InternalRow(k)).orNull
override def deserialize(datum: Any) = {
val row = datum.asInstanceOf[InternalRow]
Option(row).flatMap(row ⇒ Option(row.getBinary(0))).map(b ⇒ KryoSerializer.deserialize(b)).orNull
}
}
@metasim
Copy link
Author

metasim commented May 20, 2017

package org.apache.spark.sql.gt

import ...

class TileUDT extends UserDefinedType[Tile] {

  override val typeName = "st_tile"

  override def userClass = classOf[Tile]

  override def sqlType = StructType(Seq(StructField(typeName + "_kryo", BinaryType)))

  override def serialize(obj: Tile) =
    Option(obj).map(t  KryoSerializer.serialize(t)).map(k  InternalRow(k)).orNull

  override def deserialize(datum: Any) = {
    val row = datum.asInstanceOf[InternalRow]
    Option(row).flatMap(row  Option(row.getBinary(0))).map(b  KryoSerializer.deserialize(b)).orNull
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment