Github user xubo245 commented on a diff in the pull request: https://github.com/apache/carbondata/pull/2738#discussion_r220459945 --- Diff: store/CSDK/main.cpp --- @@ -0,0 +1,239 @@ +/* + * 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. + */ + +#include <stdio.h> +#include <jni.h> +#include <stdlib.h> +#include <iostream> +#include <unistd.h> +#include "CarbonReader.h" + +using namespace std; + +JavaVM *jvm; + +/** + * init jvm + * + * @return + */ +JNIEnv *initJVM() { + JNIEnv *env; + JavaVMInitArgs vm_args; + int parNum = 3; + int res; + JavaVMOption options[parNum]; + + options[0].optionString = "-Djava.compiler=NONE"; + options[1].optionString = "-Djava.class.path=../../sdk/target/carbondata-sdk.jar"; + options[2].optionString = "-verbose:jni"; + vm_args.version = JNI_VERSION_1_8; + vm_args.nOptions = parNum; + vm_args.options = options; + vm_args.ignoreUnrecognized = JNI_FALSE; + + res = JNI_CreateJavaVM(&jvm, (void **) &env, &vm_args); + if (res < 0) { + fprintf(stderr, "\nCan't create Java VM\n"); + exit(1); + } + + return env; +} + +/** + * test read data from local disk, without projection + * + * @param env jni env + * @return + */ +bool readFromLocalWithoutProjection(JNIEnv *env) { + + CarbonReader carbonReaderClass; + carbonReaderClass.builder(env, "../resources/carbondata", "test"); + carbonReaderClass.build(); + + printf("\nRead data from local without projection:\n"); + + while (carbonReaderClass.hasNext()) { + jobjectArray row = carbonReaderClass.readNextRow(); + jsize length = env->GetArrayLength(row); + + int j = 0; + for (j = 0; j < length; j++) { + jobject element = env->GetObjectArrayElement(row, j); + char *str = (char *) env->GetStringUTFChars((jstring) element, JNI_FALSE); + printf("%s\t", str); + } + printf("\n"); + } + + carbonReaderClass.close(); +} + +/** + * test read data from local disk + * + * @param env jni env + * @return + */ +bool readFromLocal(JNIEnv *env) { + + CarbonReader carbonReaderClass; + carbonReaderClass.builder(env, "../resources/carbondata", "test"); + + char *argv[11]; + argv[0] = "stringField"; + argv[1] = "shortField"; + argv[2] = "intField"; + argv[3] = "longField"; + argv[4] = "doubleField"; + argv[5] = "boolField"; + argv[6] = "dateField"; + argv[7] = "timeField"; + argv[8] = "decimalField"; + argv[9] = "varcharField"; + argv[10] = "arrayField"; + carbonReaderClass.projection(11, argv); + + carbonReaderClass.build(); + + printf("\nRead data from local:\n"); + + while (carbonReaderClass.hasNext()) { + jobjectArray row = carbonReaderClass.readNextRow(); + jsize length = env->GetArrayLength(row); + + int j = 0; + for (j = 0; j < length; j++) { + jobject element = env->GetObjectArrayElement(row, j); + char *str = (char *) env->GetStringUTFChars((jstring) element, JNI_FALSE); + printf("%s\t", str); + } + printf("\n"); + } + + carbonReaderClass.close(); +} + + +/** + * read data from S3 + * parameter is ak sk endpoint + * + * @param env jni env + * @param argv argument vector + * @return + */ +bool readFromS3_2(JNIEnv *env, char *argv[]) { + CarbonReader carbonReaderClass; + + char *args[3]; + // "your access key" + args[0] = argv[1]; + // "your secret key" + args[1] = argv[2]; + // "your endPoint" + args[2] = argv[3]; + + carbonReaderClass.builder(env, "s3a://sdk/WriterOutput", "test"); + carbonReaderClass.build(args[0], args[1], args[2]); + + printf("\nRead data from S3:\n"); + while (carbonReaderClass.hasNext()) { + jobjectArray row = carbonReaderClass.readNextRow(); + jsize length = env->GetArrayLength(row); + + int j = 0; + for (j = 0; j < length; j++) { + jobject element = env->GetObjectArrayElement(row, j); + char *str = (char *) env->GetStringUTFChars((jstring) element, JNI_FALSE); + printf("%s\t", str); + } + printf("\n"); + } + + carbonReaderClass.close(); +} + +/** + * read data from S3 + * parameter is ak sk endpoint + * + * @param env jni env + * @param argv argument vector + * @return + */ +bool readFromS3(JNIEnv *env, char *argv[]) { + CarbonReader carbonReaderClass; --- End diff -- ok, done
---