Move jni code to src/jni and change build flag to arrow_jni

This commit is contained in:
Yurui Zhou committed 2019-06-06 15:12:01 +08:00
1 parent 1b6a7042aa
commit e932aa8b11
14 files changed
+53 -32

No files matched your search

+5 -3
View File
@@ -252,13 +252,11 @@ endif()
if(MSVC)
# ORC doesn't build on windows
set(ARROW_ORC OFF)
set(ARROW_ORC_JNI OFF)
# Plasma using glog is not fully tested on windows.
set(ARROW_USE_GLOG OFF)
endif()
if(ARROW_ORC_JNI)
set(ARROW_ORC ON)
if(ARROW_JNI)
set(ARROW_BUILD_STATIC ON)
endif()
@@ -735,6 +733,10 @@ if(ARROW_PARQUET)
endif()
endif()
if(ARROW_JNI)
add_subdirectory(src/jni)
endif()
if(ARROW_GANDIVA)
add_subdirectory(src/gandiva)
endif()
+1 -1
View File
@@ -151,7 +151,7 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
define_option(ARROW_ORC "Build the Arrow ORC adapter" OFF)
define_option(ARROW_ORC_JNI "Build the Arrow ORC JNI lib" OFF)
define_option(ARROW_JNI "Build the Arrow JNI lib" OFF)
define_option(ARROW_TENSORFLOW "Build Arrow with TensorFlow support enabled" OFF)
@@ -49,7 +49,3 @@ add_arrow_test(adapter-test
"orc"
STATIC_LINK_LIBS
${ORC_STATIC_TEST_LINK_LIBS})
if(ARROW_ORC_JNI)
add_subdirectory(jni)
endif()
+24
View File
@@ -0,0 +1,24 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# arrow_jni
#
if(ARROW_ORC)
add_subdirectory(orc)
endif()
@@ -29,7 +29,7 @@ add_custom_target(arrow_orc_jni)
set(JNI_HEADERS_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
add_subdirectory(../../../../../../java/adapter/orc ./java)
add_subdirectory(../../../../java/adapter/orc ./java)
set(ARROW_BUILD_STATIC OFF)
@@ -52,4 +52,4 @@ ADD_ARROW_LIB(arrow_orc_jni
OUTPUT_PATH
${CMAKE_CURRENT_BINARY_DIR})
add_dependencies(arrow_orc_jni ${ARROW_ORC_JNI_LIBRARIES})
add_dependencies(arrow_orc_jni ${ARROW_ORC_JNI_LIBRARIES})
@@ -49,7 +49,7 @@ static jint JNI_VERSION = JNI_VERSION_1_6;
static arrow::concurrentMap<std::shared_ptr<arrow::Buffer>> buffer_holder_;
static arrow::concurrentMap<std::shared_ptr<RecordBatchReader>> orc_stripe_reader_holder_;
static arrow::concurrentMap<std::shared_ptr<ORCFileReader>> orc_file_reader_holder_;
static arrow::concurrentMap<std::shared_ptr<ORCFileReader>> orc_reader_holder_;
jclass CreateGlobalClassReference(JNIEnv* env, const char* class_name) {
jclass local_class = env->FindClass(class_name);
@@ -108,11 +108,11 @@ void JNI_OnUnload(JavaVM* vm, void* reserved) {
buffer_holder_.Clear();
orc_stripe_reader_holder_.Clear();
orc_file_reader_holder_.Clear();
orc_reader_holder_.Clear();
}
std::shared_ptr<ORCFileReader> GetNativeReader(jlong id) {
return orc_file_reader_holder_.Lookup(id);
return orc_reader_holder_.Lookup(id);
}
std::shared_ptr<RecordBatchReader> GetStripeReader(jlong id) {
@@ -167,7 +167,7 @@ JNIEXPORT jlong JNICALL Java_org_apache_arrow_adapter_orc_OrcReaderJniWrapper_op
env->ThrowNew(io_exception_class, std::string("Failed open file" + path).c_str());
}
return orc_file_reader_holder_.Insert(
return orc_reader_holder_.Insert(
std::shared_ptr<ORCFileReader>(reader.release()));
}
@@ -176,12 +176,12 @@ JNIEXPORT jlong JNICALL Java_org_apache_arrow_adapter_orc_OrcReaderJniWrapper_op
JNIEXPORT void JNICALL Java_org_apache_arrow_adapter_orc_OrcReaderJniWrapper_close(
JNIEnv* env, jclass this_cls, jlong id) {
orc_file_reader_holder_.Erase(id);
orc_reader_holder_.Erase(id);
}
JNIEXPORT jboolean JNICALL Java_org_apache_arrow_adapter_orc_OrcReaderJniWrapper_seek(
JNIEnv* env, jclass this_cls, jlong id, jint row_number) {
auto reader = orc_file_reader_holder_.Lookup(id);
auto reader = orc_reader_holder_.Lookup(id);
return reader->Seek(row_number).ok();
}
@@ -189,7 +189,7 @@ JNIEXPORT jint JNICALL
Java_org_apache_arrow_adapter_orc_OrcReaderJniWrapper_getNumberOfStripes(JNIEnv* env,
jclass this_cls,
jlong id) {
auto reader = orc_file_reader_holder_.Lookup(id);
auto reader = orc_reader_holder_.Lookup(id);
return reader->NumberOfStripes();
}
@@ -264,7 +264,7 @@ Java_org_apache_arrow_adapter_orc_OrcStripeReaderJniWrapper_next(JNIEnv* env,
jobjectArray memory_array =
env->NewObjectArray(buffers.size(), orc_memory_class, nullptr);
for (int j = 0; j < buffers.size(); ++j) {
for (size_t j = 0; j < buffers.size(); ++j) {
auto buffer = buffers[j];
jobject memory = env->NewObject(orc_memory_class, orc_memory_constructor,
buffer_holder_.Insert(buffer), buffer->data(),
@@ -281,7 +281,7 @@ Java_org_apache_arrow_adapter_orc_OrcStripeReaderJniWrapper_next(JNIEnv* env,
JNIEXPORT void JNICALL Java_org_apache_arrow_adapter_orc_OrcStripeReaderJniWrapper_close(
JNIEnv* env, jclass this_cls, jlong id) {
buffer_holder_.Erase(id);
orc_stripe_reader_holder_.Erase(id);
}
JNIEXPORT void JNICALL Java_org_apache_arrow_adapter_orc_OrcMemoryJniWrapper_release(
+1 -1
View File
@@ -53,7 +53,7 @@
<build>
<resources>
<resource>
<directory>${arrow.cpp.build.dir}/src/arrow/adapters/orc/jni/</directory>
<directory>${arrow.cpp.build.dir}/src/jni/orc</directory>
<includes>
<include>**/libarrow_orc_jni.*</include>
</includes>
@@ -18,7 +18,7 @@
package org.apache.arrow.adapter.orc;
/**
* Metadata about Vectors/Arrays that is passed via JNI interface
* Metadata about Vectors/Arrays that is passed via JNI interface.
*/
class OrcFieldNode {
@@ -20,7 +20,7 @@ package org.apache.arrow.adapter.orc;
import java.io.IOException;
/**
* JNI wrapper for Orc reader
* JNI wrapper for Orc reader.
*/
class OrcReaderJniWrapper {
static {
@@ -32,10 +32,10 @@ class OrcReaderJniWrapper {
}
/**
* Construct a orc file reader over the target file
* Construct a orc file reader over the target file.
* @param fileName absolute file path of target file
* @return id of the orc reader instance if file opened successfully,
* otherwise return error code * -1.
* otherwise return error code * -1.
*/
static native long open(String fileName);
@@ -31,7 +31,7 @@ class OrcRecordBatch {
final List<OrcMemoryJniWrapper> buffers;
/**
* Construct a new instance
* Construct a new instance.
* @param length number of records included in current batch
* @param nodes meta data for each fields
* @param buffers buffers for underlying data
@@ -17,8 +17,6 @@
package org.apache.arrow.adapter.orc;
import io.netty.buffer.ArrowBuf;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.arrow.memory.BufferAllocator;
@@ -26,6 +24,8 @@ import org.apache.arrow.memory.OwnershipTransferResult;
import org.apache.arrow.memory.ReferenceManager;
import org.apache.arrow.util.Preconditions;
import io.netty.buffer.ArrowBuf;
/**
* A simple reference manager implementation for memory allocated by native code.
* The underlying memory will be released when reference count reach zero.
@@ -17,8 +17,6 @@
package org.apache.arrow.adapter.orc;
import io.netty.buffer.ArrowBuf;
import java.io.IOException;
import java.util.ArrayList;
import java.util.stream.Collectors;
@@ -35,7 +33,8 @@ import org.apache.arrow.vector.ipc.message.MessageResult;
import org.apache.arrow.vector.ipc.message.MessageSerializer;
import org.apache.arrow.vector.types.pojo.Schema;
import org.apache.arrow.vector.util.ByteArrayReadableSeekableByteChannel;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import io.netty.buffer.ArrowBuf;
/**
* Orc stripe that load data into ArrowRecordBatch.
@@ -114,6 +113,6 @@ public class OrcStripeReader extends ArrowReader {
@Override
protected ArrowDictionaryBatch readDictionary() throws IOException {
throw new NotImplementedException();
throw new UnsupportedOperationException();
}
}
@@ -43,7 +43,7 @@ class OrcStripeReaderJniWrapper {
* Load next record batch.
* @param readerId id of the stripe reader instance.
* @return loaded record batch, return null when reached
* the end of current stripe.
* the end of current stripe.
*/
static native OrcRecordBatch next(long readerId);