void sync() { int result = hdfsSync(fs.get(), fout); if (result < 0) throwFromErrno("Cannot HDFS sync" + hdfs_uri.toString() + " " + std::string(hdfsGetLastError()), ErrorCodes::CANNOT_FSYNC); }
int write(const char * start, size_t size) { int bytes_written = hdfsWrite(fs.get(), fout, start, size); if (bytes_written < 0) throw Exception("Fail to write HDFS file: " + hdfs_uri.toString() + " " + std::string(hdfsGetLastError()), ErrorCodes::NETWORK_ERROR); return bytes_written; }
int read(char * start, size_t size) { int bytes_read = hdfsRead(fs.get(), fin, start, size); if (bytes_read < 0) throw Exception("Fail to read HDFS file: " + hdfs_uri.toString() + " " + std::string(hdfsGetLastError()), ErrorCodes::NETWORK_ERROR); return bytes_read; }
ReadBufferFromHDFSImpl(const std::string & hdfs_name_) : hdfs_uri(hdfs_name_) , builder(createHDFSBuilder(hdfs_uri)) , fs(createHDFSFS(builder.get())) { auto & path = hdfs_uri.getPath(); fin = hdfsOpenFile(fs.get(), path.c_str(), O_RDONLY, 0, 0, 0); if (fin == nullptr) throw Exception("Unable to open HDFS file: " + path + " error: " + std::string(hdfsGetLastError()), ErrorCodes::CANNOT_OPEN_FILE); }
~WriteBufferFromHDFSImpl() { hdfsCloseFile(fs.get(), fout); }
~ReadBufferFromHDFSImpl() { hdfsCloseFile(fs.get(), fin); }