You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sqoop.apache.org by "Eric Lin (JIRA)" <ji...@apache.org> on 2016/10/28 00:16:00 UTC
[jira] [Created] (SQOOP-3039) Sqoop unable to export Time data
"13:14:12.1234" into Time colum in RMDBS
Eric Lin created SQOOP-3039:
-------------------------------
Summary: Sqoop unable to export Time data "13:14:12.1234" into Time colum in RMDBS
Key: SQOOP-3039
URL: https://issues.apache.org/jira/browse/SQOOP-3039
Project: Sqoop
Issue Type: Bug
Components: tools
Affects Versions: 1.4.6
Reporter: Eric Lin
Priority: Minor
To re-produce:
Set up MySQL database with following schema:
{code}
CREATE TABLE `test` (
`a` time(2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
{code}
Store the following data in HDFS:
{code}
16:56:53.0999
16:56:54.1
16:56:53.0000
16:56:54.1230
{code}
run Sqoop export command to copy data from HDFS into MySQL:
{code}
qoop export --connect jdbc:mysql://<mysql-host>/test --username root --password password --table test -m 1 --driver com.mysql.jdbc.Driver --export-dir /tmp/test
{code}
Command will fail with the following error:
{code}
java.lang.RuntimeException: Can't parse input data: '16:56:53.0999'
at t5.__loadFromFields(t5.java:223)
at t5.parse(t5.java:166)
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89)
at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:784)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.NumberFormatException: For input string: "53.0999"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at java.sql.Time.valueOf(Time.java:108)
at t5.__loadFromFields(t5.java:215)
... 12 more
{code}
Looks like Sqoop uses java.sql.Time.valueOf function to convert "16:56:53.0999" to Time object, however, this function only accepts Time in "hh:mm:ss" format:
https://docs.oracle.com/javase/7/docs/api/java/sql/Time.html#valueOf(java.lang.String)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)