You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Guillermo Ortiz <ko...@gmail.com> on 2018/03/25 10:21:23 UTC
Cassandra with Spark, select a few columns with case class
I'm trying to get a few columns from a Cassandra table from Spark and put
them in a case class. If I want all the columns that I have in my case
class works. But, I only want to bring a few of them and don't have a
specific case class for each case.
I tried to overload constructor in the case class and define a normal class
but I didn't get to work.
//It doesn't work, it's normal because there aren't an specific contructor.
case class Father(idPadre: Int, name: String, lastName: String,
children: Map[Int,Son], hobbies: Map[Int,Hobbie], lastUpdate: Date)
//It works, because it has the right contructor. I tried to do an
companion object and def others contructors but it didn't work
case class FatherEspecifica(idFather: Int, name: String, children: Map[Int,Son])
//Problems in compilation, I don't know why.
class FatherClaseNormal(idFather: Int, name: String, lastName: String,
children: Map[Int,Son], hobbies: Map[Int,Hobbie], lastUpdate: Date){
/**
* A secondary constructor.
*/
def this(name: String) {
this(0, name, "", Map(), Map(), new Date());
println("\nNo last name or age given.")
}
}
//I'm trying to get some a few columns and don't have to have all the
case classes and I would like to map directly to case class and don't
use CassandraRows.
joinRdd = rddAvro.joinWithCassandraTable[FatherXXX]("poc_udt",
"father",SomeColumns("id_father", "name", "children"))
CREATE TABLE IF NOT EXISTS poc_udt.father(
id_father int PRIMARY KEY,
name text,
last_name text,
children map<int,frozen<son>>,
hobbies map<int,frozen<hobbie>>,
last_update timestamp
)
When I use a normal class the error is:
Error:(57, 67) No RowReaderFactory can be found for this type
Error occurred in an application involving default arguments.
val joinRdd =
rddAvro.joinWithCassandraTable[FatherClaseNormal]("poc_udt",
"father",SomeColumns("name"))