如何在 spark cassandra 连接器中设置列顺序

How to setup a column order in spark cassandra connector

在 spark 中,我有一个固定顺序的数据框:

agg_id,agg_key,agg_val,req_num,clk_num

当我在 cassandra 中创建类似 table 时,未保留非键列的顺序:

CREATE TABLE mytable (
   agg_id int,
   agg_key int,
   agg_val text,
   req_num bigint,
   clk_num bigint,
 PRIMARY KEY ((agg_id,agg_key), agg_val )
) WITH CLUSTERING ORDER BY (agg_val asc)

所以当我 运行 desc mytable 它显示错误的顺序(第一个 clk_num,然后 req_num)

所以当下面的代码是运行ning时,数据插入顺序错误

ds.write
  .format("org.apache.spark.sql.cassandra")
  .options(Map(
    "keyspace" -> "online_aggregation",
    "table" -> cassOutTable) )
  .mode(SaveMode.Append)
  .save

我的问题是如何在这里设置列名? 我可以在选项地图中添加一些 属性 吗?或稍微更改代码以使其正常工作。 一个限制 - DF 本身没有变化(它可能会输出到多个源)

只需 select 写入前所需顺序的列

ds
  .select("agg_id", "agg_key", ..., "clk_num")
  .write
  .format("org.apache.spark.sql.cassandra")
  .options(Map(
    "keyspace" -> "online_aggregation",
    "table" -> cassOutTable) )
  .mode(SaveMode.Append)
  .save