从mysql导入数据
Posted
技术标签:
【中文标题】从mysql导入数据【英文标题】:importing data from mysql 【发布时间】:2018-05-11 02:53:43 【问题描述】:我正在尝试将数据从 mysql
导入到 pyspark
。我能够从mysql
到pyspark
获取数据作为数据框。但数据框在daylightsavings
时间显示时间戳列的错误时间。
以下是在夏令时 tTme 期间获取数据的表的数据。
MySQL 数据
id Package_time System_time PACKAGE GROUP
1 3/12/2017 2:19:51 AM 2017-03-11 18:13:43.577 TEST_1 STATUS
2 3/12/2017 2:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM
3 3/12/2017 2:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM
4 3/12/2017 2:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM
5 3/12/2017 2:19:54 AM 2017-03-11 18:13:44.611 TEST_1 STATUS
PySpark 数据
id Package_time System_time PACKAGE GROUP
1 3/12/2017 3:19:51 AM 2017-03-11 18:13:43.577 TEST_1 STATUS
2 3/12/2017 3:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM
3 3/12/2017 3:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM
4 3/12/2017 3:19:53 AM 2017-03-11 18:13:43.577 TEST_1 ALARM
5 3/12/2017 3:19:54 AM 2017-03-11 18:13:44.611 TEST_1 STATUS
我希望pyspark
数据框的数据与mysql
表中的数据相同。我怎样才能达到我的结果。
我需要进行哪些更改以确保两个数据相同。
列的数据类型:
id int
package_time timestamp
system_time timestamp
package string
group strimg
【问题讨论】:
请edit您的问题告诉我们您的时间列的数据类型。 @O.Jones 我已将数据类型添加到问题中。请看一下 【参考方案1】:啊哈!您的日期戳值具有 TIMESTAMP
数据类型。这些以 UTC 格式存储在您的数据库中。在检索它们时,它们会根据当前时区设置转换为本地时间。
在运行查询之前,您可以使用此 SQL 命令以 UTC 格式获取它们。
SET time_zone='UTC';
如果您希望所有日期戳都显示为太平洋当地时间,并考虑夏令时,您可以使用:
SET time_zone = 'America/Vancouver';
如果您想要太平洋标准时间的所有日期戳,不考虑夏令时,您可以使用:
SET time_zone='-08:00';
【讨论】:
您的解决方案可以在mysql
中使用,但我认为这不适用于 spark
@O.Jones 我们如何设置time_zone
以考虑夏令时以上是关于从mysql导入数据的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL 使用 LOAD DATA INFILE 从 csv 导入数据