을 사용하여 HDFS (Hadoop File System)의 텍스트 파일에서 바이트를 읽는 짧은 코드가 있습니다. 그것을 컴파일하고 잘 작동합니다. 텍스트 파일의 내용을 읽을 수 있도록 코드를 변경하려고합니다. (HDFS에서 텍스트 파일 읽기 및 인쇄
char buffer[MAXBUFLEN+1] = {};
후 최대 버퍼 길이를 통과 : 당신은 당신의 버퍼 이런 식으로 초기화한다
#include "jni.h"
#include "hdfs.h"
#include "string.h"
#include "stdlib.h"
int
main(int argc, char **argv)
{
int MAXBUFLEN = 1024;
hdfsFS fs = hdfsConnect("default", 0);
const char* readPath = "/tmp/testfile.txt";
hdfsFile readFile = hdfsOpenFile(fs, readPath, O_RDONLY, 0, 0, 0);
if(!readFile) {
fprintf(stderr, "Failed to open %s for writing!\n", readPath);
exit(-1);
}
char buffer[MAXBUFLEN+1];
int bytes = hdfsRead(fs, readFile, buffer, strlen(buffer));
buffer[MAXBUFLEN] = '\0';
hdfsCloseFile(fs, readFile);
return 0;
}
쓰기 솔직히, 여기에 원격으로 파일에 액세스하지 않지만 장소 상에서. 당신은 하드 디스크에 hadoop을 통해 생성 된 로컬 단일 노드 클러스터 파일을 읽고 있습니다. 파일을 읽고 쓰려면 간단히 google을 사용하고 연습을 해보십시오. :) – ArifMustafa
@ArifMustafa는 대답. 내가 파일에 원격으로 액세스하지 않는다는 것을 알고 있는데, 이는 의도도 아닙니다. 난 단지 같은 Hadoop 환경 (Hortonworks Sandbox) 내 HDFS 물마루 C++에있는 파일을 읽고 액세스하려고합니다. https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/LibHdfs.html에서 샘플 프로그램을 살펴보면 로컬로 HDFS에 쓰는 예제를 볼 수 있습니다. 나는 똑같은 것을하고 싶지만 그 대신에 읽고 인쇄하고 싶다. –
참고로, 가상 호스트에 액세스하고 있다는 것을 의미하지는 않습니다. 로컬 환경에 있거나, Windows, Linux, Macox 등의 호스트에 있거나 가상 호스트 인 vmware wrkstn을 통해 게스트 OS를 사용 중입니다. 플레이어, Hyper-V Bro는 클래스 파일 근처에 텍스트 파일을 놓고 연습 해보고,이 링크 https://www.codesdope.com/cpp-file-io/를 보시고 연습을 해보십시오. 도움이된다면 그것을 표시하고, 감사. – ArifMustafa