我使用Spark Cassandra Connector来更新此表中的计数器:
CREATE TABLE IF NOT EXISTS analytics.minute_usage_stats (
metric_date timestamp,
user_id uuid,
metric_name text,
h1_m1 counter,
h1_m2 counter,
h1_m3 counter,
...
h24_m60 counter,
PRIMARY KEY ((metric_date), user_id, metric_name)
);
代码看起来像这样:
class Metric(metricName: String, metricDate: Date, userId: String, ???)
metricEventStream
.map(event => {
// Parsing logic
new Metric(metricName, metricDate, userId, h1M1???)
})
.saveToCassandra("analytics", "minute_usage_stats")
我需要一次更新一个计数器列,并且地图中的每个项目的列可能不同。
纵观the documentation,如果不使用Cassandra驱动程序本身并丢失Spark连接器的所有强大功能,似乎无法做到这一点。
有没有办法用当前的Spark Cassandra Connector为每个RDD行指定列名?