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 <er...@cloudera.com> on 2017/07/03 06:36:04 UTC
Review Request 60587: SQOOP-3039 - Sqoop unable to export Time data
"13:14:12.1234" into Time colum in RMDBS
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60587/
-----------------------------------------------------------
Review request for Sqoop, Attila Szabo and Szabolcs Vasas.
Bugs: SQOOP-3039
https://issues.apache.org/jira/browse/SQOOP-3039
Repository: sqoop-trunk
Description
-------
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)
Diffs
-----
src/java/com/cloudera/sqoop/lib/JdbcWritableBridge.java 316547f
src/java/org/apache/sqoop/lib/JdbcWritableBridge.java afde585
src/java/org/apache/sqoop/manager/ConnManager.java 1811ce0
src/java/org/apache/sqoop/orm/ClassWriter.java cdb2364
src/java/org/apache/sqoop/orm/Time.java PRE-CREATION
src/test/org/apache/sqoop/orm/TestTime.java PRE-CREATION
Diff: https://reviews.apache.org/r/60587/diff/1/
Testing
-------
Test cases + manual tests
Thanks,
Eric Lin
Re: Review Request 60587: SQOOP-3039 - Sqoop unable to export Time
data "13:14:12.1234" into Time colum in RMDBS
Posted by Eric Lin via Review Board <no...@reviews.apache.org>.
> On Sept. 24, 2017, 11:18 a.m., Sandish Kumar HN wrote:
> > src/java/org/apache/sqoop/orm/Time.java
> > Lines 18 (patched)
> > <https://reviews.apache.org/r/60587/diff/2/?file=1768240#file1768240line18>
> >
> > no new line between licence comment and package declaration.
New line already there, but sure if I misunderstood the issue.
- Eric
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60587/#review186057
-----------------------------------------------------------
On June 2, 2018, 9:13 p.m., Eric Lin wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/60587/
> -----------------------------------------------------------
>
> (Updated June 2, 2018, 9:13 p.m.)
>
>
> Review request for Sqoop, Boglarka Egyed, Attila Szabo, and Szabolcs Vasas.
>
>
> Bugs: SQOOP-3039
> https://issues.apache.org/jira/browse/SQOOP-3039
>
>
> Repository: sqoop-trunk
>
>
> Description
> -------
>
> 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)
>
>
> Diffs
> -----
>
> src/java/org/apache/sqoop/lib/JdbcWritableBridge.java d9628dcc
> src/java/org/apache/sqoop/manager/ConnManager.java c80dd5d9
> src/java/org/apache/sqoop/orm/ClassWriter.java a4a768af
> src/java/org/apache/sqoop/orm/Time.java PRE-CREATION
> src/test/org/apache/sqoop/TestExport.java f32f620f
> src/test/org/apache/sqoop/orm/TestTime.java PRE-CREATION
>
>
> Diff: https://reviews.apache.org/r/60587/diff/3/
>
>
> Testing
> -------
>
> Test cases + manual tests
>
>
> Thanks,
>
> Eric Lin
>
>
Re: Review Request 60587: SQOOP-3039 - Sqoop unable to export Time
data "13:14:12.1234" into Time colum in RMDBS
Posted by Sandish Kumar HN <sa...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60587/#review186057
-----------------------------------------------------------
nit required.
src/java/org/apache/sqoop/orm/Time.java
Lines 18 (patched)
<https://reviews.apache.org/r/60587/#comment262463>
no new line between licence comment and package declaration.
src/java/org/apache/sqoop/orm/Time.java
Lines 117 (patched)
<https://reviews.apache.org/r/60587/#comment262464>
toString () -> toString()
src/test/org/apache/sqoop/orm/TestTime.java
Lines 34 (patched)
<https://reviews.apache.org/r/60587/#comment262465>
nit: testValueOf1() { -> testValueOf1() {
all function in this file has two spaces it should be single space
- Sandish Kumar HN
On July 3, 2017, 9:20 a.m., Eric Lin wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/60587/
> -----------------------------------------------------------
>
> (Updated July 3, 2017, 9:20 a.m.)
>
>
> Review request for Sqoop, Attila Szabo and Szabolcs Vasas.
>
>
> Bugs: SQOOP-3039
> https://issues.apache.org/jira/browse/SQOOP-3039
>
>
> Repository: sqoop-trunk
>
>
> Description
> -------
>
> 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)
>
>
> Diffs
> -----
>
> src/java/com/cloudera/sqoop/lib/JdbcWritableBridge.java 316547f
> src/java/org/apache/sqoop/lib/JdbcWritableBridge.java afde585
> src/java/org/apache/sqoop/manager/ConnManager.java 1811ce0
> src/java/org/apache/sqoop/orm/ClassWriter.java cdb2364
> src/java/org/apache/sqoop/orm/Time.java PRE-CREATION
> src/test/com/cloudera/sqoop/TestExport.java 7948dae
> src/test/org/apache/sqoop/orm/TestTime.java PRE-CREATION
>
>
> Diff: https://reviews.apache.org/r/60587/diff/2/
>
>
> Testing
> -------
>
> Test cases + manual tests
>
>
> Thanks,
>
> Eric Lin
>
>
Re: Review Request 60587: SQOOP-3039 - Sqoop unable to export Time
data "13:14:12.1234" into Time colum in RMDBS
Posted by Eric Lin via Review Board <no...@reviews.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60587/
-----------------------------------------------------------
(Updated June 2, 2018, 9:11 p.m.)
Review request for Sqoop, Attila Szabo and Szabolcs Vasas.
Changes
-------
Updates based on review feedback, sorry about the delay!!
Bugs: SQOOP-3039
https://issues.apache.org/jira/browse/SQOOP-3039
Repository: sqoop-trunk
Description
-------
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)
Diffs (updated)
-----
src/java/org/apache/sqoop/lib/JdbcWritableBridge.java d9628dcc
src/java/org/apache/sqoop/manager/ConnManager.java c80dd5d9
src/java/org/apache/sqoop/orm/ClassWriter.java a4a768af
src/java/org/apache/sqoop/orm/Time.java PRE-CREATION
src/test/org/apache/sqoop/TestExport.java f32f620f
src/test/org/apache/sqoop/orm/TestTime.java PRE-CREATION
Diff: https://reviews.apache.org/r/60587/diff/3/
Changes: https://reviews.apache.org/r/60587/diff/2-3/
Testing
-------
Test cases + manual tests
Thanks,
Eric Lin
Re: Review Request 60587: SQOOP-3039 - Sqoop unable to export Time
data "13:14:12.1234" into Time colum in RMDBS
Posted by Eric Lin <er...@cloudera.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/60587/
-----------------------------------------------------------
(Updated July 3, 2017, 9:20 a.m.)
Review request for Sqoop, Attila Szabo and Szabolcs Vasas.
Changes
-------
added test case in TestExport class.
Bugs: SQOOP-3039
https://issues.apache.org/jira/browse/SQOOP-3039
Repository: sqoop-trunk
Description
-------
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)
Diffs (updated)
-----
src/java/com/cloudera/sqoop/lib/JdbcWritableBridge.java 316547f
src/java/org/apache/sqoop/lib/JdbcWritableBridge.java afde585
src/java/org/apache/sqoop/manager/ConnManager.java 1811ce0
src/java/org/apache/sqoop/orm/ClassWriter.java cdb2364
src/java/org/apache/sqoop/orm/Time.java PRE-CREATION
src/test/com/cloudera/sqoop/TestExport.java 7948dae
src/test/org/apache/sqoop/orm/TestTime.java PRE-CREATION
Diff: https://reviews.apache.org/r/60587/diff/2/
Changes: https://reviews.apache.org/r/60587/diff/1-2/
Testing
-------
Test cases + manual tests
Thanks,
Eric Lin