gpt4 book ai didi

apache-spark - 从具有不同 TTL 的 Spark 在 Cassandra 上批量插入

转载 作者:行者123 更新时间:2023-12-04 05:27:26 35 4
gpt4 key购买 nike

我想将大量数据从 Spark 插入到 Cassandra 中。数据有一个确定 ttl 的时间戳列。但是,每一行都不同。我的问题是,如何在从 Spark 批量插入数据时处理 ttl。

我目前的实现-

    raw_data_final.write.format("org.apache.spark.sql.cassandra")
.mode(SaveMode.Overwrite).options(Map("table" -> offerTable ,
"keyspace" -> keySpace, "spark.cassandra.output.ttl" -> ttl_seconds)).save

这里 raw_data_final 有大约一百万条记录,每条记录产生不同的 ttl。那么,有没有办法进行批量插入并以某种方式从 raw_data 中的列指定 ttl。

谢谢。

最佳答案

这通过使用 TTLOption.perRow 选项设置 WriteConf 参数来支持。 official documentation有以下 RDD 示例:

import com.datastax.spark.connector.writer._
...
rdd.saveToCassandra("test", "tab", writeConf = WriteConf(ttl = TTLOption.perRow("ttl")))

在您的情况下,您需要将 "ttl" 替换为带有 TTL 的列的名称。

我不确定您是否可以直接在 DataFrame 上设置它,但您始终可以从 DataFrame 获取 RDD,并使用 saveToCassandraWriteConf...

2020 年 9 月更新:在 Spark Cassandra Connector 2.5.0 中添加了对数据帧中 writetime 和 ttl 的支持

关于apache-spark - 从具有不同 TTL 的 Spark 在 Cassandra 上批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50866822/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com