C++读写HDFS代码

来源:互联网 发布:公安网络攻防测试 编辑:程序博客网 时间:2024/05/17 22:27

1. C++读写HDFS工程HadoopClient代码

1.1 operate_hdfs.h:

#ifndef __OPERATE_HDFS_H#define __OPERATE_HDFS_H #include <hdfs.h> class operatehdfs{public:   operatehdfs();    voidoperatehdfs_conn(char const *ip, int port);    voidoperatehdfs_open(char *filename);    int  operatehdfs_write(unsigned char *buff, intbufflen);    voidoperatehdfs_close();    voidoperatehdfs_rename(const char *oldPath, const char *newPath);private:    hdfsFSfs;    hdfsFilewriteFile;};
#endif

1.2 operate_hdfs.cpp

#include "operate_hdfs.h" #include <stdio.h> operatehdfs::operatehdfs(){ } voidoperatehdfs::operatehdfs_conn(charconst *ip,int port){    fs = hdfsConnect(ip, port);    if (!fs)    {        printf("connect hdfserror!\n");    }} voidoperatehdfs::operatehdfs_open(char*filename){    writeFile = hdfsOpenFile(fs, filename, O_WRONLY|O_CREAT,0,0,0);    if (NULL== writeFile)    {        printf("failed fs:%p open%s for writing !\n", fs, filename);    }} intoperatehdfs::operatehdfs_write(unsignedchar *buff,int bufflen){    if (NULL== writeFile)        return 0;    int num_written_bytes = hdfsWrite(fs, writeFile,(void*)buff, bufflen);    if (hdfsFlush(fs, writeFile))       {        printf("failed toflush\n");        return 0;    }    return num_written_bytes;} voidoperatehdfs::operatehdfs_close(){       if (NULL!= writeFile)              hdfsCloseFile(fs, writeFile);} voidoperatehdfs::operatehdfs_rename(constchar* oldPath,const char* newPath){       int ret = 0;       ret = hdfsRename(fs, oldPath, newPath);}


1.3 HadoopClient.cpp

#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "operate_hdfs.h" using namespace std; int main(){   operatehdfs ophd;    charwritepath[] = "/input/testfile.txt";    charwritechar[] = "this is test!";   ophd.operatehdfs_conn("192.168.241.235", 9000); //ip为安装hdfs的服务器,连接hdfs使用的端口   ophd.operatehdfs_open(writepath);    int sul= ophd.operatehdfs_write((unsigned char *)writechar, strlen(writechar));   cout<<"success:"<<sul<<endl;   ophd.operatehdfs_close();    return0;}


2. C++读写HDFS工程HadoopClient2代码

2.1 HadoopClient2.c

#include "hdfs.h"#include "stdio.h"#include "stdlib.h"#include "string.h" int main(int argc, char **argv) {     hdfsFSfs = hdfsConnect("192.168.241.235", 9000);    constchar* writePath = "/tmp/testfile.txt";    hdfsFilewriteFile = hdfsOpenFile(fs, writePath, O_WRONLY|O_CREAT, 0, 0, 0);   if(!writeFile) {         fprintf(stderr, "Failed to open %s for writing!\n",writePath);         exit(-1);    }    char*buffer = "Hello, World!";    tSizenum_written_bytes = hdfsWrite(fs, writeFile, (void*)buffer, strlen(buffer)+1);    if(hdfsFlush(fs, writeFile)) {       fprintf(stderr, "Failed to 'flush' %s\n", writePath);       exit(-1);    }   hdfsCloseFile(fs, writeFile);}