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