apache / datafusion-comet

Apache DataFusion Comet Spark Accelerator
https://datafusion.apache.org/comet
Apache License 2.0
447 stars 100 forks source link

On Intel-Mac java.lang.UnsupportedOperationException: Unsupported OS/arch, cannot find /org/apache/comet/darwin/x86_64/libcomet.dylib. #333

Closed ganeshkumar269 closed 3 weeks ago

ganeshkumar269 commented 3 weeks ago

Describe the bug

I am on Intel Mac, I get the following error message when i run mvn test

[ERROR] org.apache.comet.parquet.TestColumnReader.testConstantVectors Time elapsed: 0.938 s <<< ERROR! java.lang.ExceptionInInitializerError at org.apache.comet.parquet.Utils.initColumnReader(Utils.java:117) at org.apache.comet.parquet.AbstractColumnReader.initNative(AbstractColumnReader.java:113) at org.apache.comet.parquet.ConstantColumnReader.(ConstantColumnReader.java:64) at org.apache.comet.parquet.ConstantColumnReader.(ConstantColumnReader.java:50) at org.apache.comet.parquet.TestColumnReader.testConstantVectors(TestColumnReader.java:101) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316) at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495) Caused by: java.lang.UnsupportedOperationException: Unsupported OS/arch, cannot find /org/apache/comet/darwin/x86_64/libcomet.dylib. Please try building from source. at org.apache.comet.NativeBase.bundleLoadLibrary(NativeBase.java:105) at org.apache.comet.NativeBase.load(NativeBase.java:88) at org.apache.comet.NativeBase.(NativeBase.java:53) ... 33 more [ERROR] org.apache.comet.parquet.TestColumnReader.testRowIndexColumnVectors Time elapsed: 0.001 s <<< ERROR! java.lang.NoClassDefFoundError: Could not initialize class org.apache.comet.parquet.Native at org.apache.comet.parquet.Utils.initColumnReader(Utils.java:117) at org.apache.comet.parquet.AbstractColumnReader.initNative(AbstractColumnReader.java:113) at org.apache.comet.parquet.AbstractColumnReader.setBatchSize(AbstractColumnReader.java:85) at org.apache.comet.parquet.MetadataColumnReader.setBatchSize(MetadataColumnReader.java:47) at org.apache.comet.parquet.RowIndexColumnReader.(RowIndexColumnReader.java:38) at org.apache.comet.parquet.TestColumnReader.testRowIndexColumnVectors(TestColumnReader.java:161) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316) at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385) at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162) at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)

on further analysis I found, libcomet.dylib is being created in the following directory core/target/release/ rather than expected core/target/x86_64-apple-darwin/release

I was able to fix this by adding a new resource for the core/target/release directory in common pom.xml as following

<resource>
    <directory>${project.basedir}/../core/target/release</directory>
    <includes>
      <include>libcomet.dylib</include>
    </includes>
    <targetPath>org/apache/comet/darwin/x86_64</targetPath>
  </resource>

Steps to reproduce

run mvn test

Expected behavior

No response

Additional context

No response

viirya commented 3 weeks ago

Can you try to run make test by following DEVELOPMENT.md?

ganeshkumar269 commented 3 weeks ago

Hi, I am no longer getting this error, after following the steps mentioned in DEVELOPMENT.md. thanks for the help. closing the issue.

viirya commented 3 weeks ago

Thank you @ganeshkumar269