I've just discovered* that I can SerDe my case classes. What a nice
feature which I can use in spark-shell, too! Thanks a lot for offering
me so much fun!

What I don't really like about the code is the following part (esp.
that it conflicts with the implicit for Column):

import org.apache.spark.sql.catalyst.dsl.expressions._
// in spark-shell there are competing implicits
// That's why DslSymbol is used explicitly in the following line
scala> val attrs = Seq(DslSymbol('id).long, DslSymbol('name).string)
attrs: Seq[org.apache.spark.sql.catalyst.expressions.AttributeReference]
= List(id#8L, name#9)

scala> val jacekReborn = personExprEncoder.resolveAndBind(attrs).fromRow(row)
jacekReborn: Person = Person(0,Jacek)

Since I've got the "schema" as the case class Person I'd like to avoid
creating attrs manually. Is there a way to avoid the step and use a
"reflection"-like approach so the attrs are built out of the case

Also, since we're at it, why's resolveAndBind required? Is this for
names and their types only?

Thanks for your help (and for such fantastic project Apache Spark!)

[*] yeah, took me a while, but the happiness is stronger and I'll
remember longer! :-)

Jacek Laskowski
Mastering Apache Spark 2.0 http://bit.ly/mastering-apache-spark
Follow me at https://twitter.com/jaceklaskowski

To unsubscribe e-mail: dev-unsubscr...@spark.apache.org

Reply via email to