是否可以更改cassandra中的所有数据值
来自:2020-05-18T14:18:45.878Z
到 1593402243336
(如 Instant Java 类型)
此列中的所有数据均为文本
类型
我想知道如何编写一个脚本来将日期从 2020-05-18T14:18:45.878Z
更改为 1593402243336
最佳答案
在 Cassandra 中,有一个单独的 timestamp
类型来保存此类信息。在内部,它将数据存储为 8 字节长的值,表示时间(以毫秒为单位)。该值通过驱动程序访问,并且可以转换为特定于所使用的编程语言的类型的值。如果您通过 cqlsh
访问这些值,则需要将它们打印为 2020-05-18T14:18:45.878Z
,但实际上它仍然是 long
在引擎盖下输入。
要执行此类转换,您需要做两件事:
- 您需要添加另一列
timestamp
类型 - 您无法更改现有列的类型 - 您需要使用一些工具来执行此类转换,但这实际上取决于您的要求。您可以这样做,例如:
- Spark - 只需使用 Spark Cassandra Connector 执行类似的操作
val data = { spark.read.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "", "keyspace" -> ""))
.load().withColumnRenamed("text_column", "date_column")}
data.write.format("org.apache.spark.sql.cassandra")
.options(Map("table" -> "", "keyspace" -> "")).mode("append").save()
关于Cassandra 脚本将日期更改为即时类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62711959/