in scala-repl/src/main/scala/spark/ztools.sc [805:837]
override def accept(obj: Any): Boolean = obj.isInstanceOf[Dataset[_]]
override def handle(scalaInfo: ScalaVariableInfo, loopback: Loopback, depth: Int): mutable.Map[String, Any] = {
val obj = scalaInfo.value
val df = obj.asInstanceOf[Dataset[_]]
val schema = df.schema
val jsonSchemaColumns = schema.fields.map(field => {
val value = withJsonObject { jsonField =>
jsonField += "name" -> wrap(field.name, null)
jsonField += "nullable" -> wrap(field.nullable, null)
jsonField += "dataType" -> wrap(field.dataType.typeName, null)
}
wrap(value, "org.apache.spark.sql.types.StructField")
}
)
val jsonSchema = mutable.Map(
ResNames.VALUE -> jsonSchemaColumns,
ResNames.TYPE -> "org.apache.spark.sql.types.StructType",
ResNames.LENGTH -> jsonSchemaColumns.length
)
val dfValue = mutable.Map(
"schema()" -> jsonSchema,
"getStorageLevel()" -> wrap(df.storageLevel.toString(), "org.apache.spark.storage.StorageLevel")
)
mutable.Map(
ResNames.VALUE -> dfValue
)
}