如何在 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
在 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