从mysql导入数据

Posted

技术标签:

【中文标题】从mysql导入数据【英文标题】:importing data from mysql 【发布时间】:2018-05-11 02:53:43 【问题描述】:

我正在尝试将数据从 mysql 导入到 pyspark。我能够从mysqlpyspark 获取数据作为数据框。但数据框在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导入数据的主要内容,如果未能解决你的问题,请参考以下文章

1200万 mysql数据怎么快速导入到Mongodb

从 MySql 转储导入到配置单元

MYSQL 使用 LOAD DATA INFILE 从 csv 导入数据

使用hadoop将数据从Mysql导入hdfs时出错?

将数据从 MySQL 数据库导入到 Pandas 数据框中,包括列名 [重复]

sqoop 导入从mysql导入数据到hive报类找不到