avro 格式的日期数据类型的 Sqoop 导入

Posted

技术标签:

【中文标题】avro 格式的日期数据类型的 Sqoop 导入【英文标题】:Sqoop import for Date datatype in avro fromat 【发布时间】:2015-07-01 07:56:50 【问题描述】:

**我的问题是日期少了两天

在 SQL Server 中,日期为 2015-06-12(日期类型为日期)它被转换为 配置单元表avro格式的字符串,值为2015-06-10。

使用的脚本。

sqoop import --connect "xxx" --query 'select * from dbo.tableName WHERE $CONDITIONS' --target-dir xxx --fields-terminated-by '\001' --split-by tableName.columnName1 -m 8 --as-avrodatafile --compression-codec snappy --map-column-java columnName2=String,;

【问题讨论】:

您使用的是什么版本的 Sqoop?这是 MS SQL Server,对吧? 另外,您的服务器和您正在调用 Sqoop 的机器的时区是什么? Sqoop 版本:sqoop 1.4 服务器的日期/时钟和数据节点有区别吗?请记住,如果不指定 -D mapreduce.map.java.opts=" -Duser.timezone=$tz"(其中 $tz 是服务器的时区),Sqoop 将使用数据节点的时区解释时间戳(自纪元以来的秒数)。 我调用 sqoop 的机器有时区 MST。但我无权访问 SQL 服务器。 【参考方案1】:

我想我可能知道。 MS SQL 驱动程序有一个带有 Java 7 的 known issue。要么降级到 Java 6,更新/升级你的 SQL Server 驱动程序,要么升级到 jTDS(我注意到 jTDS 的性能更好)。

【讨论】:

很高兴我们能解决这个问题。你能接受我的回答吗?

以上是关于avro 格式的日期数据类型的 Sqoop 导入的主要内容,如果未能解决你的问题,请参考以下文章

Sqoop - 使用 Avro 格式将表从 Oracle 导入 Hive 的最佳选择是啥?

使用 sqoop 将数据从 CSV 导入 Avro 表的命令

在 sqoop 中使用 java api 导入 avro 数据

Dataproc 上的 Sqoop 无法将数据导出为 Avro 格式

使用 sqoop 从 Oracle 到 hive 的日期导入问题

将 Avro 中存储为整数(自 1970 年 1 月 1 日以来的天数)的“日期”转换为雪花“日期”类型