Pyspark 使用 datastax 连接器在 Cassandra 中插入时间
Pyspark inserting Time in Cassandra using datastax connector
我正在使用以下方法将数据从 Pyspark 插入到 Cassandra:
com.datastax.spark:spark-cassandra-connector_2.11:2.4.0
在我插入的变量中还有时间,连接器不喜欢它。
如果我尝试发送:'16:51:35.634652' 并且收到以下错误:
com.datastax.spark.connector.types.TypeConversionException:无法将 16:51:35.634652 类型 class java.lang.String 的对象转换为 java.lang.Long .
基本上,转换器不喜欢字符串,它想将其转换为 java.lang.long,而实际上在 cassandra 中是时间,在 python 中是字符串。
我想知道我怎样才能在不将任何东西转换为 Long 的情况下在 Cassandra 上带来价值,我认为将时间转换为 Long 没有多大意义。
找到了!我检查了:
https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/spark/sparkSupportedTypes.html
我发现:CQL 时间戳 -> SCALA:长,java.util.Date,java.sql.Date,org.joda.time.DateTime
所以我转换了我的变量
import datetime
date_time_1 = '11:12:27.243860'
date_time_obj = datetime.datetime.strptime(date_time_str, %H:%M:%S.%f')
已发送至连接器,一切正常!
我正在使用以下方法将数据从 Pyspark 插入到 Cassandra:
com.datastax.spark:spark-cassandra-connector_2.11:2.4.0
在我插入的变量中还有时间,连接器不喜欢它。 如果我尝试发送:'16:51:35.634652' 并且收到以下错误:
com.datastax.spark.connector.types.TypeConversionException:无法将 16:51:35.634652 类型 class java.lang.String 的对象转换为 java.lang.Long .
基本上,转换器不喜欢字符串,它想将其转换为 java.lang.long,而实际上在 cassandra 中是时间,在 python 中是字符串。
我想知道我怎样才能在不将任何东西转换为 Long 的情况下在 Cassandra 上带来价值,我认为将时间转换为 Long 没有多大意义。
找到了!我检查了:
https://docs.datastax.com/en/dse/6.0/dse-dev/datastax_enterprise/spark/sparkSupportedTypes.html
我发现:CQL 时间戳 -> SCALA:长,java.util.Date,java.sql.Date,org.joda.time.DateTime
所以我转换了我的变量
import datetime
date_time_1 = '11:12:27.243860'
date_time_obj = datetime.datetime.strptime(date_time_str, %H:%M:%S.%f')
已发送至连接器,一切正常!