Сопоставление памяти с файлом, загруженным из HDFS на C

#c #hadoop #hdfs #mmap #file-descriptor

Вопрос:

Чтобы сопоставить локальный файл в памяти, я сначала открою файл и получу его файловый дескриптор open , а затем использую mmap для сопоставления файла в памяти, вот так —

 int fd = open("somefile.txt", 0)
char* foo = (char*)mmap(0, size_in_bytes, PROT_READ, MAP_FILE | MAP_SHARED, fd, 0);
 

Как получить файловый дескриптор при открытии файла из HDFS? libhdfs является общим объектом, поэтому я не могу изучить API для hdfsFile .

Я могу открыть файл, используя libhdfs , например —

 hdfsFS fs = hdfsConnect("127.0.0.1", 9000);
hdfsFile myfile = hdfsOpenFile(fs, "somefile.txt", O_RDONLY, 0, 0, 0);
 

Но я не уверен, как получить файловый дескриптор, к которому я бы перешел mmap .

Поскольку файл находится в HDFS, возможно ли вообще получить файловый дескриптор?

Если это не так, то как бы я сопоставил файл в памяти, который я прочитал из HDFS? Или, другими словами, как мне получить foo второй фрагмент кода выше?