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


---

Reply via email to