Jarek Jarcec Cecho created SQOOP-2496:
-----------------------------------------

             Summary: 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


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)

Reply via email to