【问题标题】:Right format of Timestamp for filtering pyspark dataframe for Cassandra用于过滤 Cassandra 的 pyspark 数据帧的时间戳的正确格式
【发布时间】:2020-06-17 17:14:07
【问题描述】:

我在 Cassandra 中将时间戳存储为 YYYY-mm-dd HH:MM:SSZ 并且我能够过滤数据以在 cql shell 中获得一定的时间范围,但是当我在 pyspark 上尝试相同的时间时数据框我在过滤后的数据框中没有得到任何值。

谁能帮我在 pyspark 中为此找到正确的日期时间格式?

谢谢。

【问题讨论】:

    标签: python apache-spark pyspark cassandra spark-cassandra-connector


    【解决方案1】:

    这种时间戳格式可以正常工作。我认为您的 Spark SQL 类型有问题,因此您可能需要对时间戳字符串执行显式转换,以便 Spark 可以执行正确的比较。

    例如,这个 Scala 代码可以正常工作(您可能需要将其调整为 Python):

    import org.apache.spark.sql.cassandra._
    val data = spark.read.cassandraFormat("sdtest", "test").load()
    
    val filtered = data.filter("ts >= cast('2019-07-17 14:41:34.373Z' as timestamp) AND ts <= cast('2019-07-19 19:01:56Z' as timestamp)")
    

    【讨论】:

    • 是的,你是对的,这是 Spark SQL 的问题,添加 spark.conf.set("spark.sql.session.timeZone", "UTC") 解决了这个问题。非常感谢。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 2020-06-02
    • 2017-03-16
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多