Scala 使用Spark Cassandra连接器保存嵌套案例类

Scala 使用Spark Cassandra连接器保存嵌套案例类,scala,apache-spark,spark-cassandra-connector,Scala,Apache Spark,Spark Cassandra Connector,我正在尝试解决如何使用Spark Cassandra连接器保存嵌套的case类。举个简单的例子: 个案类别: case class Foo(id: String, bar: Bar) case class Bar(field1: String) 卡桑德拉表: CREATE TABLE foo (id text, field1 text, PRIMARY KEY (id)); 火花代码: val foo = Foo("a", Bar("b")) val fooRdd = sparkContex

我正在尝试解决如何使用Spark Cassandra连接器保存嵌套的case类。举个简单的例子:

个案类别:

case class Foo(id: String, bar: Bar)
case class Bar(field1: String)
卡桑德拉表:

CREATE TABLE foo (id text, field1 text, PRIMARY KEY (id));
火花代码:

val foo = Foo("a", Bar("b"))
val fooRdd = sparkContext.parallelize(Seq(foo))
fooRdd.saveToCassandra(cassandraKeyspace, "foo")
结果:

Exception in thread "main" java.lang.IllegalArgumentException: requirement failed: Columns not found in Foo: [field1]

我意识到我可以创建一个新的case类来简化Foo,但如果可能的话,我宁愿不这样做。我玩过柱映射器,但没用。有更好的方法吗?

您找到解决方案了吗
fooRdd2.saveToCassandra(cassandraKeyspace,“foo”,SomeColumns(“id”,“field1”作为“bar.field1”))
不起作用。这不是一个很好的方法-我最终制作了一个自定义的行编写器,如中所述。您找到解决方案了吗
fooRdd2.saveToCassandra(cassandraKeyspace,“foo”,SomeColumns(“id”,“field1”作为“bar.field1”))
不起作用,这不是一个好办法-我最终制作了一个自定义的行编写器,如中所述。