2015-05-25 2 views
0

Удалось ли использовать hdfs из C++ с помощью hasoop 2.6.0?Использовать hasoop HDFS из C++, неопределенная ссылка на `hdfsConnect '

Я пытаюсь собрать этот мир кода:

#include "hdfs.h" 

int main(int argc, char **argv) { 

    hdfsFS fs = hdfsConnect("default", 0); 
    const char* writePath = "/tmp/testfile.txt"; 
    hdfsFile writeFile = 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!"; 
    tSize num_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); 
} 

Вот список моих папок:

$ ls ${HADOOP_HDFS_HOME} 
bin etc include lib libexec LICENSE.txt logs NOTICE.txt README.txt sbin share 

$ ls ${HADOOP_HDFS_HOME}/include 
hdfs.h Pipes.hh SerialUtils.hh StringUtils.hh TemplateFactory.hh 

$ ls ${HADOOP_HDFS_HOME}/lib/native 
libhadoop.a libhadooppipes.a libhadoop.so libhadoop.so.1.0.0 libhadooputils.a libhdfs.a libhdfs.so libhdfs.so.0.0.0 

Я пытаюсь скомпилировать с помощью этой команды, и получить ошибки:

g++ -I${HADOOP_HDFS_HOME}/include -L${HADOOP_HDFS_HOME}/lib/native -lhdfs -lhadooputils -o hdfs_test hdfs_test.cpp 
/tmp/ccyYER8m.o: In function `main': 
hdfs_test.cpp:(.text+0x1b): undefined reference to `hdfsConnect' 
hdfs_test.cpp:(.text+0x8f): undefined reference to `hdfsOpenFile' 
hdfs_test.cpp:(.text+0xe8): undefined reference to `hdfsWrite' 
hdfs_test.cpp:(.text+0xfe): undefined reference to `hdfsFlush' 
hdfs_test.cpp:(.text+0x141): undefined reference to `hdfsCloseFile' 

Я понимаю, что мне нужно связать некоторые библиотеки хаопов, но я не могу найти никакой документации. Также у меня нет большого опыта в C++.

ответ

1

Попробуйте это:

экспорт HADOOP_INSTALL =/дом/Джеймсе/Desktop/hadoop2.7.2 экспорт PATH = $ PATH: $ HADOOP_INSTALL/бен

добавить параметры компоновщика: -lhadooppipes - lhadooputils

добавить поиск линкер каталоги: /Библиотека/родной

BTW: Если вы работаете в 64-битной системе, вам нужно скомпилировать hadoop для 64-битного.