Spark RDD写入Cassandra

时间:2019-07-01 17:55:42

标签: apache-spark spark-cassandra-connector

我有一个下面的Cassandra Table模式。

ColumnA Primary Key
ColumnB Clustering Key
ColumnC
ColumnD

现在,我有一个带有列顺序的Spark RDD RDD [ColumnC,ColumnA,ColumnB,ColumnD]

因此,当我写Cassandra表时,我需要确保顺序正确。所以,我要使用SomeColumns指定列的顺序

rdd.saveToCassandra(keyspace,table,SomeColumns("ColumnA","ColumnB","ColumnC","ColumnD))

有什么办法可以将所有列名作为列表传递吗?我问这是因为我的目标表中大约有140个列,并且不能给出所有名称作为SomeColumns的一部分。因此,正在寻找一种更清洁的方法。

PS:我无法从DataFrame编写它,我只在寻找基于RDD的解决方案。

1 个答案:

答案 0 :(得分:1)

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

SomeColumns(names_as_sequence: _*)

更新:

如果您有一系列的列名作为字符串,那么您需要这样做:

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