castTo
inline fun <reified T> DataFrame<*>.castTo(schemaFrom: DataFrame<T>, verify: Boolean = true): DataFrame<T>
inline fun <reified T> DataFrame<*>.castTo(schemaFrom: Function<DataFrame<T>>, verify: Boolean = true): DataFrame<T>
With the compiler plugin, schema marker T of DataFrame can be a local type. You cannot refer to it directly from your code, like a type argument for cast. The example below shows a situation where you'd need to cast DataFrame<*> to DataFrameschemaFrom
// parse listOf("b:1:abc", "c:2:bca")
private fun convert(data: List<String>)/*: DataFrame<plugin generated local type>*/= data.map { it.split(":") }.toDataFrame {
"part1" from { it[0] }
"part2" from { it[1].toInt() }
"part3" from { it[2] }
}
fun serialize(data: List<String>, destination: File) {
convert(data).writeJson(destination)
}
fun deserializeAndUse(file: File) {
val df = DataFrame.readJson(file).castTo(schemaFrom = ::convert)
// Possible to use properties
df.part1.print()
}Content copied to clipboard
For more information: See cast on the documentation website.