[
https://issues.apache.org/jira/browse/SQOOP-2496?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alvin Ge updated SQOOP-2496:
----------------------------
Attachment: MapreduceSubmissionEngine.java
this...
> Sqoop2: Provide a way to inject external connectors
> ---------------------------------------------------
>
> Key: SQOOP-2496
> URL: https://issues.apache.org/jira/browse/SQOOP-2496
> Project: Sqoop
> Issue Type: Bug
> Affects Versions: 1.99.6
> Reporter: Jarek Jarcec Cecho
> Fix For: 1.99.7
>
> Attachments: MapreduceSubmissionEngine.java
>
>
> On internal hackathon we we're hacking Sqoop 2 connector with [~singhashish]
> and we went through few troubles that we should address.
> We have a a [configuration
> property|https://github.com/apache/sqoop/blob/sqoop2/dist/src/main/server/conf/sqoop.properties#L173]
> for extra directory from which we will load jar files. We were able to use
> this configuration property to load our hacked connector to Server, but we
> were not able to get it working through job submission. Here is the exception
> that we hit:
> {code}
> java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative
> path in absolute URI:
> jar:file://var/lib/sqoop/connectors/Connector-1.0-SNAPSHOT.jar!
> at org.apache.hadoop.fs.Path.initialize(Path.java:206)
> at org.apache.hadoop.fs.Path.<init>(Path.java:172)
> at
> org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:215)
> at
> org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:390)
> at
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:483)
> at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1306)
> at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1303)
> at java.security.AccessController.doPrivileged(Native Method)
> at javax.security.auth.Subject.doAs(Subject.java:415)
> at
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
> at org.apache.hadoop.mapreduce.Job.submit(Job.java:1303)
> at
> org.apache.sqoop.submission.mapreduce.MapreduceSubmissionEngine.submitToCluster(MapreduceSubmissionEngine.java:274)
> at
> org.apache.sqoop.submission.mapreduce.MapreduceSubmissionEngine.submit(MapreduceSubmissionEngine.java:255)
> at org.apache.sqoop.driver.JobManager.start(JobManager.java:288)
> at
> org.apache.sqoop.handler.JobRequestHandler.startJob(JobRequestHandler.java:380)
> at
> org.apache.sqoop.handler.JobRequestHandler.handleEvent(JobRequestHandler.java:116)
> at
> org.apache.sqoop.server.v1.JobServlet.handlePutRequest(JobServlet.java:96)
> at
> org.apache.sqoop.server.SqoopProtocolServlet.doPut(SqoopProtocolServlet.java:79)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
> {code}
> To put into nutshell,
> [ClassUtils.jarForClass|https://github.com/apache/sqoop/blob/sqoop2/common/src/main/java/org/apache/sqoop/utils/ClassUtils.java#L136]
> returns for external connectors path starting with prefix {{jar:file}} and
> suffix {{!}} that breaks mapreduce code.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)