Hey Yuri,

you can use the Arrow IPC mechanism to do this:

- https://github.com/apache/arrow/blob/master/format/IPC.md
- Python: https://arrow.apache.org/docs/python/ipc.html
- C++: https://arrow.apache.org/docs/cpp/namespacearrow_1_1ipc.html
- For Java, see the org.apache.arrow.vector.ipc namespace

On the C++ side, you can for example use a RecordBatchStreamWriter to write
the IPC message, and then on the Java side you could use the
ArrowStreamReader to read it.

There are some tests here:
https://github.com/apache/arrow/blob/master/cpp/src/arrow/ipc/ipc-read-write-test.cc
https://github.com/apache/arrow/tree/master/java/vector/src/test/java/org/apache/arrow/vector/ipc

There is also integration tests here, although I'm not really familiar with
them:

https://github.com/apache/arrow/tree/master/integration

If you could write a little tutorial/into on how to do this (maybe using
Plasma for exchanging the data) and contribute it to the documentation,
that would be amazing!

Best,
Philipp.

On Mon, Jul 16, 2018 at 4:14 AM, 周宇睿(闻拙) <yurui....@alibaba-inc.com> wrote:

> Hi guys:
>
> I might miss something quite obviously. But how does Arrow passing objects
> across language? Let’s say I have a java program that invoke a c++ function
> via JNI, how does the c++ function pass an Arrow RecordBack object back to
> Java runtime without memory copy?
>
> Any advise would be appreciated.
> Thanks
> Yurui
>
> from Alimail macOS

Reply via email to