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 格式