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
Datetime SPARK SQL和Cassandra之间的时区不匹配_Datetime_Cassandra_Apache Spark Sql_Spark Dataframe - Fatal编程技术网

Datetime SPARK SQL和Cassandra之间的时区不匹配

Datetime SPARK SQL和Cassandra之间的时区不匹配,datetime,cassandra,apache-spark-sql,spark-dataframe,Datetime,Cassandra,Apache Spark Sql,Spark Dataframe,我试图将数据从Cassandra加载到Spark DataFrame,但时间戳列值正在转换为UTC时区,而不是EDT 我正在寻找一个解决方案,在这两种情况下,时区都应该是EDT 例如: Cassandra时间戳:-2017年8月16日00:00:00(美国东部夏令时时区) 查询spark sql dataframe/tempview后获得的时间戳:-15-08-2017 20:00:00(4小时变化,时区为UTC) 我在谷歌上搜索了很多,发现转换将基于本地时间戳进行,但即使在更改本地时间戳之后,

我试图将数据从Cassandra加载到Spark DataFrame,但时间戳列值正在转换为UTC时区,而不是EDT

我正在寻找一个解决方案,在这两种情况下,时区都应该是EDT

例如:

Cassandra时间戳:-2017年8月16日00:00:00(美国东部夏令时时区)

查询spark sql dataframe/tempview后获得的时间戳:-15-08-2017 20:00:00(4小时变化,时区为UTC)

我在谷歌上搜索了很多,发现转换将基于本地时间戳进行,但即使在更改本地时间戳之后,我仍然看到在SPARK SQL中时区正在被修改

供参考:

卡桑德拉时区:美国东部时间
运行spark作业的本地时区:EDT默认情况下,Cassandra使用UTC时区,但cqlshrc中指定的时区仅在将其显示到控制台时进行更改/类型转换

就我的情况而言,我已经将本地时区从EDT修改为UTC,以完成任务,但按照规定,它也可以按要求的时间进行分级


感谢@Uttam Kasundara触发了完美点。

Cassandra使用UTC时间存储在时间戳列中。如果在输出中需要特定的时区实例,则必须将UTC转换为所需的时区。有一种方法可以使用dataframe的生成列来完成。