Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用不同TTL的Spark在Cassandra上插入质量块_Apache Spark_Cassandra_Spark Cassandra Connector_Ttl - Fatal编程技术网

Apache spark 使用不同TTL的Spark在Cassandra上插入质量块

Apache spark 使用不同TTL的Spark在Cassandra上插入质量块,apache-spark,cassandra,spark-cassandra-connector,ttl,Apache Spark,Cassandra,Spark Cassandra Connector,Ttl,我想把Spark的大量数据插入Cassandra。数据有一个确定ttl的时间戳列。但是,每行的情况不同。我的问题是,在从Spark批量插入数据时,如何处理ttl 我当前的实现- raw_data_final.write.format("org.apache.spark.sql.cassandra") .mode(SaveMode.Overwrite).options(Map("table" -> offerTable , "keyspace" ->

我想把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   
这里的原始数据有大约一百万条记录,每条记录产生不同的ttl。那么,有没有一种方法可以进行大容量插入,并从原始数据中的一列指定ttl呢


谢谢。

这是通过使用
TTLOption.perRow
选项设置
writecf
参数来支持的。以下是RDD的示例:

import com.datastax.spark.connector.writer._
...
rdd.saveToCassandra("test", "tab", writeConf = WriteConf(ttl = TTLOption.perRow("ttl")))
在您的情况下,您需要将
“ttl”
替换为列名为ttl

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


2020年9月更新:在

中添加了对数据帧中writetime和ttl的支持。您能解释更多吗?如何使用timestamp列作为ttl?有一个expr_dt列,我可以从中计算ttl。(ttl=expr_dt-当前时间戳)。所以,我可以将ttl作为我的输入列之一。我们有Java中的等效代码吗?我尝试过搜索,但我只看到了scala的方法。没有,但它应该很容易翻译。如何将cassandra连接配置添加到此配置的一部分?例如,当您创建spark上下文时,Thankscassandra连接配置在另一个地方定义