SFW_RetCode SequenceFileWriter::write(const char* data) { QRLogger::log(CAT_SQL_HDFS_SEQ_FILE_WRITER, LL_DEBUG, "SequenceFileWriter::write(%s) called.", data); if (initJNIEnv() != JOI_OK) return SFW_ERROR_WRITE_PARAM; jstring js_data = jenv_->NewStringUTF(data); if (js_data == NULL) { jenv_->PopLocalFrame(NULL); return SFW_ERROR_WRITE_PARAM; } // String write(java.lang.String); tsRecentJMFromJNI = JavaMethods_[JM_WRITE].jm_full_name; jstring jresult = (jstring)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_WRITE].methodID, js_data); if (jresult != NULL) { logError(CAT_SQL_HDFS_SEQ_FILE_WRITER, "SequenceFileWriter::write()", jresult); jenv_->PopLocalFrame(NULL); return SFW_ERROR_WRITE_EXCEPTION; } jenv_->PopLocalFrame(NULL); return SFW_OK; }
HDFS_Client_RetCode HdfsClient::hdfsCreateDirectory(const NAString &dirName) { QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "Enter HDFSClient_JNI::createDirectory() called."); if (initJNIEnv() != JOI_OK) return HDFS_CLIENT_ERROR_CREATE_DIRECTORY_PARAM; if (getInstance() == NULL) return HDFS_CLIENT_ERROR_CREATE_DIRECTORY_PARAM; jstring js_dirName = jenv_->NewStringUTF(dirName.data()); if (js_dirName == NULL) { jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_CREATE_DIRECTORY_PARAM; } tsRecentJMFromJNI = JavaMethods_[JM_HDFS_CREATE_DIRECTORY].jm_full_name; jstring jresult = (jstring)jenv_->CallStaticObjectMethod(javaClass_, JavaMethods_[JM_HDFS_CREATE_DIRECTORY].methodID, js_dirName); if (jenv_->ExceptionCheck()) { getExceptionDetails(jenv_); logError(CAT_SQL_HBASE, __FILE__, __LINE__); logError(CAT_SQL_HBASE, "HDFSClient_JNI::hdfsCreateDirectory()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_CREATE_DIRECTORY_EXCEPTION; } if (jresult == false) { logError(CAT_SQL_HDFS, "HdfsClient::hdfsCreateDirectory()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_DELETE_PATH_EXCEPTION; } jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_OK; }
OFR_RetCode OrcFileReader::close() { QRLogger::log(CAT_SQL_HDFS_ORC_FILE_READER, LL_DEBUG, "OrcFileReader::close() called."); if (initJNIEnv() != JOI_OK) return OFR_ERROR_GETPOS_EXCEPTION; // String close(); tsRecentJMFromJNI = JavaMethods_[JM_CLOSE].jm_full_name; jstring jresult = (jstring)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_CLOSE].methodID); if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "OrcFileReader::close()"); jenv_->PopLocalFrame(NULL); return OFR_ERROR_CLOSE_EXCEPTION; } if (jresult!=NULL) { logError(CAT_SQL_HDFS_ORC_FILE_READER, "OrcFileReader::close()", jresult); jenv_->PopLocalFrame(NULL); return OFR_ERROR_CLOSE_EXCEPTION; } jenv_->PopLocalFrame(NULL); return OFR_OK; }
SFR_RetCode SequenceFileReader::fetchNextRow(Int64 stopOffset, char* buffer) { if (initJNIEnv() != JOI_OK) return SFR_ERROR_FETCHROW_EXCEPTION; // java.lang.String fetchNextRow(long stopOffset); tsRecentJMFromJNI = JavaMethods_[JM_FETCHROW2].jm_full_name; jstring jresult = (jstring)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_FETCHROW2].methodID, stopOffset); if (jresult==NULL && getLastError()) { logError(CAT_SQL_HDFS_SEQ_FILE_READER, "SequenceFileReader::fetchNextRow()", getLastError()); jenv_->PopLocalFrame(NULL); return SFR_ERROR_FETCHROW_EXCEPTION; } if (jresult == NULL) { jenv_->PopLocalFrame(NULL); return SFR_NOMORE; } const char* char_result = jenv_->GetStringUTFChars(jresult, 0); strcpy(buffer, char_result); jenv_->ReleaseStringUTFChars(jresult, char_result); jenv_->PopLocalFrame(NULL); return SFR_OK; }
OFR_RetCode OrcFileReader::open(const char* path) { QRLogger::log(CAT_SQL_HDFS_ORC_FILE_READER, LL_DEBUG, "OrcFileReader::open(%s) called.", path); if (initJNIEnv() != JOI_OK) return OFR_ERROR_OPEN_PARAM; jstring js_path = jenv_->NewStringUTF(path); if (js_path == NULL) { jenv_->PopLocalFrame(NULL); return OFR_ERROR_OPEN_PARAM; } // String open(java.lang.String); tsRecentJMFromJNI = JavaMethods_[JM_OPEN].jm_full_name; jstring jresult = (jstring)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_OPEN].methodID, js_path); if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "OrcFileReader::open()"); jenv_->PopLocalFrame(NULL); return OFR_ERROR_OPEN_EXCEPTION; } jenv_->PopLocalFrame(NULL); return OFR_OK; }
SFW_RetCode SequenceFileWriter::open(const char* path, SFW_CompType compression) { QRLogger::log(CAT_SQL_HDFS_SEQ_FILE_WRITER, LL_DEBUG, "SequenceFileWriter::open(%s) called.", path); if (initJNIEnv() != JOI_OK) return SFW_ERROR_OPEN_PARAM; jstring js_path = jenv_->NewStringUTF(path); if (js_path == NULL) { jenv_->PopLocalFrame(NULL); return SFW_ERROR_OPEN_PARAM; } // String open(java.lang.String); tsRecentJMFromJNI = JavaMethods_[JM_OPEN].jm_full_name; jstring jresult = (jstring)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_OPEN].methodID, js_path, compression); if (jresult != NULL) { logError(CAT_SQL_HDFS_SEQ_FILE_WRITER, "SequenceFileWriter::open()", jresult); jenv_->PopLocalFrame(NULL); return SFW_ERROR_OPEN_EXCEPTION; } jenv_->PopLocalFrame(NULL); return SFW_OK; }
HVC_RetCode HiveClient_JNI::initConnection() { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HiveClient_JNI::initConnection(%s) called."); if (initJNIEnv() != JOI_OK) return HVC_ERROR_INIT_PARAM; if (init() != HVC_OK) return HVC_ERROR_INIT_PARAM; tsRecentJMFromJNI = JavaMethods_[JM_INIT].jm_full_name; jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_INIT].methodID); if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "HiveClient_JNI::initConnection()"); jenv_->PopLocalFrame(NULL); return HVC_ERROR_INIT_EXCEPTION; } if (jresult == false) { logError(CAT_SQL_HDFS, "HiveClient_JNI::initConnection()", getLastError()); jenv_->PopLocalFrame(NULL); return HVC_ERROR_INIT_EXCEPTION; } isConnected_ = TRUE; jenv_->PopLocalFrame(NULL); return HVC_OK; }
HDFS_Client_RetCode HdfsClient::getFsDefaultName(char* buf, int buf_len) { QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "Enter HDFSClient_JNI::getFsDefaultName() called."); if (initJNIEnv() != JOI_OK) return HDFS_CLIENT_ERROR_GET_FS_DEFAULT_NAME_PARAM; if (getInstance() == NULL) return HDFS_CLIENT_ERROR_GET_FS_DEFAULT_NAME_PARAM; tsRecentJMFromJNI = JavaMethods_[JM_GET_FS_DEFAULT_NAME].jm_full_name; jstring jresult = (jstring)jenv_->CallStaticObjectMethod(javaClass_, JavaMethods_[JM_GET_FS_DEFAULT_NAME].methodID); if (jenv_->ExceptionCheck()) { getExceptionDetails(jenv_); logError(CAT_SQL_HBASE, __FILE__, __LINE__); logError(CAT_SQL_HBASE, "HDFSClient_JNI::getFsDefaultName()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_GET_FS_DEFAULT_NAME_EXCEPTION; } const char* char_result = jenv_->GetStringUTFChars(jresult, 0); HDFS_Client_RetCode retcode = HDFS_CLIENT_OK; if ( buf_len >= strlen(char_result) ) { strcpy(buf, char_result); } else retcode = HDFS_CLIENT_ERROR_GET_FS_DEFAULT_NAME_BUFFER_TOO_SMALL; jenv_->ReleaseStringUTFChars(jresult, char_result); jenv_->PopLocalFrame(NULL); return retcode; }
HDFS_Client_RetCode HdfsClient::hdfsListDirectory(const char *pathStr, HDFS_FileInfo **hdfsFileInfo, int *numFiles) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsClient::hdfsListDirectory(%s) called.", pathStr); if (initJNIEnv() != JOI_OK) return HDFS_CLIENT_ERROR_HDFS_LIST_DIR_PARAM; jstring js_pathStr = jenv_->NewStringUTF(pathStr); if (js_pathStr == NULL) { jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_LIST_DIR_PARAM; } jlong jniObj = (long)this; tsRecentJMFromJNI = JavaMethods_[JM_HDFS_LIST_DIRECTORY].jm_full_name; jint retNumFiles = jenv_->CallIntMethod(javaObj_, JavaMethods_[JM_HDFS_LIST_DIRECTORY].methodID, js_pathStr, jniObj); if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsClient::hdfsListDirectory()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_LIST_DIR_EXCEPTION; } *numFiles = retNumFiles; *hdfsFileInfo = hdfsFileInfo_; jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_OK; }
HDFS_Scan_RetCode HdfsScan::stop() { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsScan::stop() called."); if (initJNIEnv() != JOI_OK) return HDFS_SCAN_ERROR_STOP_PARAM; if (hdfsStats_ != NULL) hdfsStats_->getHdfsTimer().start(); tsRecentJMFromJNI = JavaMethods_[JM_STOP].jm_full_name; jenv_->CallVoidMethod(javaObj_, JavaMethods_[JM_STOP].methodID); if (hdfsStats_ != NULL) { hdfsStats_->incMaxHdfsIOTime(hdfsStats_->getHdfsTimer().stop()); hdfsStats_->incHdfsCalls(); } if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsScan::stop()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_SCAN_ERROR_STOP_EXCEPTION; } return HDFS_SCAN_OK; }
HDFS_Client_RetCode HdfsClient::hdfsExists( const NAString& uldPath, NABoolean & exist) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsClient::hdfsExists(%s) called.", uldPath.data()); if (initJNIEnv() != JOI_OK) return HDFS_CLIENT_ERROR_HDFS_EXISTS_PARAM; if (getInstance() == NULL) return HDFS_CLIENT_ERROR_HDFS_EXISTS_PARAM; jstring js_UldPath = jenv_->NewStringUTF(uldPath.data()); if (js_UldPath == NULL) { jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_EXISTS_PARAM; } tsRecentJMFromJNI = JavaMethods_[JM_HDFS_EXISTS].jm_full_name; jboolean jresult = jenv_->CallStaticBooleanMethod(javaClass_, JavaMethods_[JM_HDFS_EXISTS].methodID, js_UldPath); exist = jresult; if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsClient::hdfsExists()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_EXISTS_EXCEPTION; } jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_OK; }
HDFS_Client_RetCode HdfsClient::hdfsCleanUnloadPath( const NAString& uldPath) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsClient::hdfsCleanUnloadPath(%s) called.", uldPath.data()); if (initJNIEnv() != JOI_OK) return HDFS_CLIENT_ERROR_HDFS_CLEANUP_PARAM; if (getInstance() == NULL) return HDFS_CLIENT_ERROR_HDFS_CLEANUP_PARAM; jstring js_UldPath = jenv_->NewStringUTF(uldPath.data()); if (js_UldPath == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HDFS_CLIENT_ERROR_HDFS_CLEANUP_PARAM)); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_CLEANUP_PARAM; } tsRecentJMFromJNI = JavaMethods_[JM_HDFS_CLEAN_UNLOAD_PATH].jm_full_name; jboolean jresult = jenv_->CallStaticBooleanMethod(javaClass_, JavaMethods_[JM_HDFS_CLEAN_UNLOAD_PATH].methodID, js_UldPath); if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsClient::hdfsCleanUnloadPath()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_CLEANUP_EXCEPTION; } jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_OK; }
HDFS_Scan_RetCode HdfsScan::trafHdfsRead(int retArray[], short arrayLen) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsScan::trafHdfsRead() called."); if (initJNIEnv() != JOI_OK) return HDFS_SCAN_ERROR_TRAF_HDFS_READ_PARAM; if (hdfsStats_ != NULL) hdfsStats_->getHdfsTimer().start(); tsRecentJMFromJNI = JavaMethods_[JM_TRAF_HDFS_READ].jm_full_name; jintArray j_retArray = (jintArray)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_TRAF_HDFS_READ].methodID); if (hdfsStats_ != NULL) { hdfsStats_->incMaxHdfsIOTime(hdfsStats_->getHdfsTimer().stop()); hdfsStats_->incHdfsCalls(); } if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsScan::setScanRanges()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_SCAN_ERROR_TRAF_HDFS_READ_EXCEPTION; } if (j_retArray == NULL) return HDFS_SCAN_EOR; short retArrayLen = jenv_->GetArrayLength(j_retArray); ex_assert(retArrayLen == arrayLen, "HdfsScan::trafHdfsRead() InternalError: retArrayLen != arrayLen"); jenv_->GetIntArrayRegion(j_retArray, 0, 4, retArray); return HDFS_SCAN_OK; }
OFR_RetCode OrcFileReader::getPosition(Int64& pos) { QRLogger::log(CAT_SQL_HDFS_ORC_FILE_READER, LL_DEBUG, "OrcFileReader::getPosition(%ld) called.", pos); if (initJNIEnv() != JOI_OK) return OFR_ERROR_GETPOS_EXCEPTION; // long getPosition(); tsRecentJMFromJNI = JavaMethods_[JM_GETPOS].jm_full_name; Int64 result = jenv_->CallLongMethod(javaObj_, JavaMethods_[JM_GETPOS].methodID); if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "OrcFileReader::getPosition()"); jenv_->PopLocalFrame(NULL); return OFR_ERROR_GETPOS_EXCEPTION; } if (result == -1) { logError(CAT_SQL_HDFS_ORC_FILE_READER, "OrcFileReader::getPosition()", getLastError()); jenv_->PopLocalFrame(NULL); return OFR_ERROR_GETPOS_EXCEPTION; } pos = result; jenv_->PopLocalFrame(NULL); return OFR_OK; }
SFR_RetCode SequenceFileReader::isEOF(bool& isEOF) { QRLogger::log(CAT_SQL_HDFS_SEQ_FILE_READER, LL_DEBUG, "SequenceFileReader::isEOF() called."); if (initJNIEnv() != JOI_OK) return SFR_ERROR_ISEOF_EXCEPTION; // boolean isEOF(); tsRecentJMFromJNI = JavaMethods_[JM_ISEOF].jm_full_name; bool result = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_ISEOF].methodID); jenv_->PopLocalFrame(NULL); isEOF = result; return SFR_OK; }
HVC_RetCode HiveClient_JNI::getRedefTime(const char* schName, const char* tabName, Int64& redefTime) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "Enter HiveClient_JNI::getRedefTime(%s, %s, %lld).", schName, tabName, redefTime); if (initJNIEnv() != JOI_OK) return HVC_ERROR_INIT_PARAM; if (getInstance() == NULL) return HVC_ERROR_INIT_PARAM; jstring js_schName = jenv_->NewStringUTF(schName); if (js_schName == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HVC_ERROR_GET_REDEFTIME_PARAM)); jenv_->PopLocalFrame(NULL); return HVC_ERROR_GET_REDEFTIME_PARAM; } jstring js_tabName = jenv_->NewStringUTF(tabName); if (js_tabName == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HVC_ERROR_GET_REDEFTIME_PARAM)); jenv_->PopLocalFrame(NULL); return HVC_ERROR_GET_REDEFTIME_PARAM; } // jlong getRedefTime(java.lang.String, java.lang.String); tsRecentJMFromJNI = JavaMethods_[JM_GET_RDT].jm_full_name; jlong jresult = jenv_->CallStaticLongMethod(javaClass_, JavaMethods_[JM_GET_RDT].methodID, js_schName, js_tabName); if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "HiveClient_JNI::getRedefTime()"); jenv_->PopLocalFrame(NULL); return HVC_ERROR_GET_REDEFTIME_EXCEPTION; } QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "Exit HiveClient_JNI::getRedefTime(%s, %s, %lld).", schName, tabName, redefTime); if (jresult <= 0) { jenv_->PopLocalFrame(NULL); return HVC_DONE; // Table does not exist } redefTime = jresult ; jenv_->PopLocalFrame(NULL); return HVC_OK; // Table exists. }
HDFS_Client_RetCode HdfsClient::hdfsMergeFiles( const NAString& srcPath, const NAString& dstPath) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsClient::hdfsMergeFiles(%s, %s) called.", srcPath.data(), dstPath.data()); if (initJNIEnv() != JOI_OK) return HDFS_CLIENT_ERROR_HDFS_MERGE_FILES_PARAM; if (getInstance() == NULL) return HDFS_CLIENT_ERROR_HDFS_MERGE_FILES_PARAM; jstring js_SrcPath = jenv_->NewStringUTF(srcPath.data()); if (js_SrcPath == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HDFS_CLIENT_ERROR_HDFS_MERGE_FILES_PARAM)); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_MERGE_FILES_PARAM; } jstring js_DstPath= jenv_->NewStringUTF(dstPath.data()); if (js_DstPath == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HDFS_CLIENT_ERROR_HDFS_MERGE_FILES_PARAM)); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_MERGE_FILES_PARAM; } tsRecentJMFromJNI = JavaMethods_[JM_HDFS_MERGE_FILES].jm_full_name; jboolean jresult = jenv_->CallStaticBooleanMethod(javaClass_, JavaMethods_[JM_HDFS_MERGE_FILES].methodID, js_SrcPath, js_DstPath); if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsClient::hdfsMergeFiles()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_MERGE_FILES_EXCEPTION; } if (jresult == false) { logError(CAT_SQL_HDFS, "HdfsClient::hdfsMergeFiles()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_MERGE_FILES_EXCEPTION; } jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_OK; }
HiveClient_JNI* HiveClient_JNI::newInstance(NAHeap *heap, HVC_RetCode &retCode) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HiveClient_JNI::newInstance() called."); if (initJNIEnv() != JOI_OK) return NULL; retCode = HVC_OK; HiveClient_JNI *hiveClient_JNI = new (heap) HiveClient_JNI(heap); if (hiveClient_JNI != NULL) { retCode = hiveClient_JNI->initConnection(); if (retCode != HVC_OK) { NADELETE(hiveClient_JNI, HiveClient_JNI, heap); hiveClient_JNI = NULL; } } return hiveClient_JNI; }
Int32 HdfsClient::hdfsWrite(const char* data, Int64 len, HDFS_Client_RetCode &hdfsClientRetcode) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsClient::hdfsWrite(%ld) called.", len); if (initJNIEnv() != JOI_OK) { hdfsClientRetcode = HDFS_CLIENT_ERROR_HDFS_WRITE_EXCEPTION; return 0; } //Write the requisite bytes into the file jbyteArray jbArray = jenv_->NewByteArray( len); if (!jbArray) { GetCliGlobals()->setJniErrorStr(getErrorText(HDFS_CLIENT_ERROR_HDFS_WRITE_PARAM)); jenv_->PopLocalFrame(NULL); hdfsClientRetcode = HDFS_CLIENT_ERROR_HDFS_WRITE_PARAM; return 0; } jenv_->SetByteArrayRegion(jbArray, 0, len, (const jbyte*)data); if (hdfsStats_ != NULL) hdfsStats_->getHdfsTimer().start(); tsRecentJMFromJNI = JavaMethods_[JM_HDFS_WRITE].jm_full_name; // Java method returns the cumulative bytes written jint totalBytesWritten = jenv_->CallIntMethod(javaObj_, JavaMethods_[JM_HDFS_WRITE].methodID, jbArray); if (hdfsStats_ != NULL) { hdfsStats_->incMaxHdfsIOTime(hdfsStats_->getHdfsTimer().stop()); hdfsStats_->incHdfsCalls(); } if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsClient::hdfsWrite()", getLastError()); jenv_->PopLocalFrame(NULL); hdfsClientRetcode = HDFS_CLIENT_ERROR_HDFS_WRITE_EXCEPTION; return 0; } jenv_->PopLocalFrame(NULL); hdfsClientRetcode = HDFS_CLIENT_OK; Int32 bytesWritten = totalBytesWritten - totalBytesWritten_; totalBytesWritten_ = totalBytesWritten; return bytesWritten; }
HDFS_Client_RetCode HdfsClient::hdfsCreate(const char* path, NABoolean overwrite, NABoolean compress) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsClient::hdfsCreate(%s) called.", path); if (initJNIEnv() != JOI_OK) return HDFS_CLIENT_ERROR_HDFS_CREATE_PARAM; setPath(path); jstring js_path = jenv_->NewStringUTF(path); if (js_path == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HDFS_CLIENT_ERROR_HDFS_CREATE_PARAM)); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_CREATE_PARAM; } jboolean j_compress = compress; jboolean j_overwrite = overwrite; if (hdfsStats_ != NULL) hdfsStats_->getHdfsTimer().start(); tsRecentJMFromJNI = JavaMethods_[JM_HDFS_CREATE].jm_full_name; jboolean jresult = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_HDFS_CREATE].methodID, js_path, j_overwrite, j_compress); if (hdfsStats_ != NULL) { hdfsStats_->incMaxHdfsIOTime(hdfsStats_->getHdfsTimer().stop()); hdfsStats_->incHdfsCalls(); } if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsClient::hdfsCreate()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_CREATE_EXCEPTION; } if (jresult == false) { logError(CAT_SQL_HDFS, "HdfsClient::hdfsCreate()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_CREATE_PARAM; } jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_OK; }
HdfsClient *HdfsClient::newInstance(NAHeap *heap, ExHdfsScanStats *hdfsStats, HDFS_Client_RetCode &retCode) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsClient::newInstance() called."); if (initJNIEnv() != JOI_OK) return NULL; retCode = HDFS_CLIENT_OK; HdfsClient *hdfsClient = new (heap) HdfsClient(heap); if (hdfsClient != NULL) { retCode = hdfsClient->init(); if (retCode == HDFS_CLIENT_OK) hdfsClient->setHdfsStats(hdfsStats); else { NADELETE(hdfsClient, HdfsClient, heap); hdfsClient = NULL; } } return hdfsClient; }
OFR_RetCode OrcFileReader::getRowCount(Int64& count) { QRLogger::log(CAT_SQL_HDFS_ORC_FILE_READER, LL_DEBUG, "OrcFileReader::getRowCount() called."); if (initJNIEnv() != JOI_OK) return OFR_ERROR_GETNUMROWS_EXCEPTION; tsRecentJMFromJNI = JavaMethods_[JM_GETNUMROWS].jm_full_name; jlong jresult = (jlong)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_GETNUMROWS].methodID); count = jresult; if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "OrcFileReader::getRowCount()"); jenv_->PopLocalFrame(NULL); return OFR_ERROR_GETNUMROWS_EXCEPTION; } jenv_->PopLocalFrame(NULL); return OFR_OK; }
HVC_RetCode HiveClient_JNI::exists(const char* schName, const char* tabName) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HiveClient_JNI::exists(%s, %s) called.", schName, tabName); if (initJNIEnv() != JOI_OK) return HVC_ERROR_INIT_PARAM; if (getInstance() == NULL) return HVC_ERROR_INIT_PARAM; jstring js_schName = jenv_->NewStringUTF(schName); if (js_schName == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HVC_ERROR_EXISTS_PARAM)); jenv_->PopLocalFrame(NULL); return HVC_ERROR_EXISTS_PARAM; } jstring js_tabName = jenv_->NewStringUTF(tabName); if (js_tabName == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HVC_ERROR_EXISTS_PARAM)); jenv_->PopLocalFrame(NULL); return HVC_ERROR_EXISTS_PARAM; } // boolean exists(java.lang.String, java.lang.String); tsRecentJMFromJNI = JavaMethods_[JM_EXISTS].jm_full_name; jboolean jresult = jenv_->CallStaticBooleanMethod(javaClass_, JavaMethods_[JM_EXISTS].methodID, js_schName, js_tabName); if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "HiveClient_JNI::exists()"); jenv_->PopLocalFrame(NULL); return HVC_ERROR_EXISTS_EXCEPTION; } if (jresult == false) { jenv_->PopLocalFrame(NULL); return HVC_DONE; // Table does not exist } jenv_->PopLocalFrame(NULL); return HVC_OK; // Table exists. }
SFR_RetCode SequenceFileReader::seeknSync(Int64 pos) { QRLogger::log(CAT_SQL_HDFS_SEQ_FILE_READER, LL_DEBUG, "SequenceFileReader::seeknSync(%ld) called.", pos); if (initJNIEnv() != JOI_OK) return SFR_ERROR_GETPOS_EXCEPTION; // String seeknSync(long); tsRecentJMFromJNI = JavaMethods_[JM_SYNC].jm_full_name; jstring jresult = (jstring)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_SYNC].methodID, pos); if (jresult != NULL) { logError(CAT_SQL_HDFS_SEQ_FILE_READER, "SequenceFileReader::seeknSync()", jresult); jenv_->PopLocalFrame(NULL); return SFR_ERROR_SYNC_EXCEPTION; } jenv_->PopLocalFrame(NULL); return SFR_OK; }
OFR_RetCode OrcFileReader::isEOF(bool& isEOF) { QRLogger::log(CAT_SQL_HDFS_ORC_FILE_READER, LL_DEBUG, "OrcFileReader::isEOF() called."); if (initJNIEnv() != JOI_OK) return OFR_ERROR_ISEOF_EXCEPTION; // boolean isEOF(); tsRecentJMFromJNI = JavaMethods_[JM_ISEOF].jm_full_name; bool result = jenv_->CallBooleanMethod(javaObj_, JavaMethods_[JM_ISEOF].methodID); if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "OrcFileReader::isEOF()"); jenv_->PopLocalFrame(NULL); return OFR_ERROR_ISEOF_EXCEPTION; } isEOF = result; jenv_->PopLocalFrame(NULL); return OFR_OK; }
SFW_RetCode SequenceFileWriter::close() { QRLogger::log(CAT_SQL_HDFS_SEQ_FILE_WRITER, LL_DEBUG, "SequenceFileWriter::close() called."); if (initJNIEnv() != JOI_OK) return SFW_ERROR_CLOSE_EXCEPTION; // String close(); tsRecentJMFromJNI = JavaMethods_[JM_CLOSE].jm_full_name; jstring jresult = (jstring)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_CLOSE].methodID); if (jresult != NULL) { logError(CAT_SQL_HDFS_SEQ_FILE_WRITER, "SequenceFileWriter::close()", jresult); jenv_->PopLocalFrame(NULL); return SFW_ERROR_CLOSE_EXCEPTION; } jenv_->PopLocalFrame(NULL); return SFW_OK; }
SFR_RetCode SequenceFileReader::getPosition(Int64& pos) { QRLogger::log(CAT_SQL_HDFS_SEQ_FILE_READER, LL_DEBUG, "SequenceFileReader::getPosition(%ld) called.", pos); if (initJNIEnv() != JOI_OK) return SFR_ERROR_GETPOS_EXCEPTION; // long getPosition(); tsRecentJMFromJNI = JavaMethods_[JM_GETPOS].jm_full_name; Int64 result = jenv_->CallLongMethod(javaObj_, JavaMethods_[JM_GETPOS].methodID); if (result == -1) { logError(CAT_SQL_HDFS_SEQ_FILE_READER, "SequenceFileReader::getPosition()", getLastError()); jenv_->PopLocalFrame(NULL); return SFR_ERROR_GETPOS_EXCEPTION; } pos = result; jenv_->PopLocalFrame(NULL); return SFR_OK; }
OFR_RetCode OrcFileReader::seeknSync(Int64 pos) { Int64 orcPos; if (initJNIEnv() != JOI_OK) return OFR_ERROR_SYNC_EXCEPTION; orcPos = pos -1; //When you position in ORC, reading the NEXT row will be one greater than what you wanted. QRLogger::log(CAT_SQL_HDFS_ORC_FILE_READER, LL_DEBUG, "OrcFileReader::seeknSync(%ld) called.", pos); // String seeknSync(long); tsRecentJMFromJNI = JavaMethods_[JM_SYNC].jm_full_name; jstring jresult = (jstring)jenv_->CallObjectMethod(javaObj_, JavaMethods_[JM_SYNC].methodID, orcPos); if (jenv_->ExceptionCheck()) { getExceptionDetails(__FILE__, __LINE__, "OrcFileReader::seeknSync()"); jenv_->PopLocalFrame(NULL); return OFR_ERROR_SYNC_EXCEPTION; } if (jresult != NULL) { const char *my_string = jenv_->GetStringUTFChars(jresult, JNI_FALSE); QRLogger::log(CAT_SQL_HDFS_ORC_FILE_READER, LL_DEBUG, "OrcFileReader::seeknSync(%ld) error: %s\n", pos, my_string); logError(CAT_SQL_HDFS_ORC_FILE_READER, "OrcFileReader::seeknSync()", jresult); jenv_->PopLocalFrame(NULL); return OFR_ERROR_SYNC_EXCEPTION; } jenv_->PopLocalFrame(NULL); return OFR_OK; }
Int32 HdfsClient::hdfsRead(const char* data, Int64 len, HDFS_Client_RetCode &hdfsClientRetcode) { QRLogger::log(CAT_SQL_HDFS, LL_DEBUG, "HdfsClient::hdfsWrite(%ld) called.", len); if (initJNIEnv() != JOI_OK) { hdfsClientRetcode = HDFS_CLIENT_ERROR_HDFS_READ_EXCEPTION; return 0; } jobject j_buf = jenv_->NewDirectByteBuffer((BYTE *)data, len); if (j_buf == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HDFS_CLIENT_ERROR_HDFS_READ_PARAM)); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HDFS_READ_PARAM; } if (hdfsStats_ != NULL) hdfsStats_->getHdfsTimer().start(); tsRecentJMFromJNI = JavaMethods_[JM_HDFS_READ].jm_full_name; jint bytesRead = 0; bytesRead = jenv_->CallIntMethod(javaObj_, JavaMethods_[JM_HDFS_READ].methodID, j_buf); if (hdfsStats_ != NULL) { hdfsStats_->incMaxHdfsIOTime(hdfsStats_->getHdfsTimer().stop()); hdfsStats_->incHdfsCalls(); } if (jenv_->ExceptionCheck()) { getExceptionDetails(); logError(CAT_SQL_HDFS, __FILE__, __LINE__); logError(CAT_SQL_HDFS, "HdfsClient::hdfsRead()", getLastError()); jenv_->PopLocalFrame(NULL); hdfsClientRetcode = HDFS_CLIENT_ERROR_HDFS_READ_EXCEPTION; return 0; } jenv_->PopLocalFrame(NULL); hdfsClientRetcode = HDFS_CLIENT_OK; return bytesRead; }
HDFS_Client_RetCode HdfsClient::getHiveTableMaxModificationTs( Int64& maxModificationTs, const char * tableDirPaths, int levelDeep) { QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "Enter HDFSClient_JNI::getHiveTableMaxModificationTs(%s) called.",tableDirPaths); if (initJNIEnv() != JOI_OK) return HDFS_CLIENT_ERROR_HIVE_TBL_MAX_MODIFICATION_TS_PARAM; if (getInstance() == NULL) return HDFS_CLIENT_ERROR_HIVE_TBL_MAX_MODIFICATION_TS_PARAM; jstring js_tableDirPaths = jenv_->NewStringUTF(tableDirPaths); if (js_tableDirPaths == NULL) { GetCliGlobals()->setJniErrorStr(getErrorText(HDFS_CLIENT_ERROR_HIVE_TBL_MAX_MODIFICATION_TS_PARAM)); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HIVE_TBL_MAX_MODIFICATION_TS_PARAM; } jint jlevelDeep = levelDeep; tsRecentJMFromJNI = JavaMethods_[JM_HIVE_TBL_MAX_MODIFICATION_TS].jm_full_name; jlong jresult = jenv_->CallStaticLongMethod(javaClass_, JavaMethods_[JM_HIVE_TBL_MAX_MODIFICATION_TS].methodID, js_tableDirPaths, jlevelDeep); jenv_->DeleteLocalRef(js_tableDirPaths); if (jenv_->ExceptionCheck()) { getExceptionDetails(jenv_); logError(CAT_SQL_HBASE, __FILE__, __LINE__); logError(CAT_SQL_HBASE, "HDFSClientI::getHiveTableMaxModificationTs()", getLastError()); jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_ERROR_HIVE_TBL_MAX_MODIFICATION_TS_EXCEPTION; } QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "Exit HDFSClient_JNI::getHiveTableMaxModificationTs() called."); maxModificationTs = jresult; jenv_->PopLocalFrame(NULL); return HDFS_CLIENT_OK; }