#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
второй фрагмент кода выше?