You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@spark.apache.org by Erik O'Shaughnessy <er...@oracle.com> on 2016/06/20 19:33:52 UTC

Integrating a Native ARchive (NAR) into Apache Spark

Hello, 

I’ve cobbled together a JNI interface and packaged it with the nar-maven-plugin, but I’m frankly
out of my depth with Java/Scala/Maven and could use some pointers about how to make my new JNI
object available for import in spark-shell.

My NAR project builds a simple Foo object that wraps some native libfoo calls. The unit tests
for the NAR indicate that my C APIs are being called successfully. I installed it into my local .m2
repository cache and was able to include it as a dependency in a simple test project which builds
and calls my shared library.  So far so good.

Wrong.

I’ve tried adding Foo as a dependency in spark/pom.xml and adding nar-maven-plugin to the build
section of the top level POM:

<dependencies>
 <dependency>
  <groupId>com.oracle.sae</groupId>
  <artifactId>Foo</artifactId>
  <version>1.0-SNAPSHOT</version>
  <type>nar</type>
 </dependency>
</dependencies>

<build>
 <plugins>
  <plugin>
    <groupId>com.github.maven-nar</groupId>
    <artifactId>nar-maven-plugin</artifactId>
    <version>3.4.1-SNAPSHOT-SAE</version>
    <extensions>true</extensions>
    <executions>
      <execution>
        <goals>
          <goal>nar-unpack</goal>
        </goals>
      </execution>
    </executions>
  <plugin>
  </plugin>
 </plugins>
</build>

I had to do some hacking on nar-maven-plugin to teach it about my platform/os/linker, which
is the reason for the goofy nar-maven-plugin version number. 

A spark build succeeds, but:

scala> import com.oracle.sae.Foo
<console>:23: error: object Foo is not a member of package com.oracle.sae


I tried adding my Foo maven project as a module in the top-level POM and moving my project
into the Apache Spark tree.  It built everything including my Foo project, however the Foo
object wasn’t available in spark-shell like I had hoped.

I’m a totally neophyte when it comes to the Maven ecosystem, however I’ve come a long way in
the last two weeks. I know it’s a weird request, but I would be most appreciative if someone
could provide some gentle hints about how to make my Foo object available within spark-shell.

Best regards,
Erik


Erik O'Shaughnessy - Principal Software Engineer
Strategic Application Engineering
Austin, TX 512-401-1070
erik.oshaughnessy@oracle.com


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@spark.apache.org
For additional commands, e-mail: dev-help@spark.apache.org