Apache spark Spark RDD写信给卡桑德拉

Apache spark Spark RDD写信给卡桑德拉,apache-spark,spark-cassandra-connector,Apache Spark,Spark Cassandra Connector,我有一个下卡桑德拉表模式 ColumnA Primary Key ColumnB Clustering Key ColumnC ColumnD 现在,我有一个Spark RDD,列的顺序如下 RDD[列C,列A,列B,列D] 因此,当我向Cassandra表写入数据时,我需要确保顺序是正确的。因此,我必须使用SomeColumns指定列顺序 rdd.saveToCassandra(keyspace,table,SomeColumns("ColumnA","ColumnB","ColumnC",

我有一个下卡桑德拉表模式

ColumnA Primary Key
ColumnB Clustering Key
ColumnC
ColumnD
现在,我有一个Spark RDD,列的顺序如下 RDD[列C,列A,列B,列D]

因此,当我向Cassandra表写入数据时,我需要确保顺序是正确的。因此,我必须使用SomeColumns指定列顺序

rdd.saveToCassandra(keyspace,table,SomeColumns("ColumnA","ColumnB","ColumnC","ColumnD))
有没有办法把所有列名作为列表传递?我这样问是因为我的目标表中有大约140列,并且不能将所有名称作为SomeColumns的一部分给出。因此,寻找一种更干净的方法


PS:我无法从数据帧编写,我只寻找基于RDD的解决方案。

您可以使用以下语法将序列分解为参数列表:

SomeColumns(names_as_sequence: _*)
更新:

如果列名称序列为字符串,则需要执行以下操作:

SomeColumns(names_as_string_seq.map(x => x.as(x)): _*)

它希望输入为Seq[ColumnRef]。所以我将Seq[String]类型转换为Seq[ColumnRef]。然后失败,出现以下异常java.lang.ClassCastException:java.lang.String无法转换为com.datastax.spark.connector.ColumnRef