在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.用haddop提供的C API to HDFS来实现文件写入到HDFS中。过程中主要是在配置环境花了点时间 参考官网:http://hadoop.apache.org/common/docs/r0.20.203.0/libhdfs.html 不用重新编译直接用$HADOOP_HOME/c++/Linux-Linux-amd64-64/lib即可,若要编译libhdfs,在hadoop顶层目录运行:ant compile-c++-libhdfs -Dislibhdfs=true API主要可以去hadoop软件包解压目录中查看hdfs.h定义的一些已实现的函数 一门语言的初学入门例子,一般都是“hello,world”,下面看写hdfs文件代码,文件hello_hdfs.c 1 #include "hdfs.h" 2 3 int main(int argc, char **argv) { 4 5 hdfsFS fs = hdfsConnect("127.0.0.1", 9000); 6 const char* writePath = "/tmp/testfile.txt"; 7 hdfsFile writeFile = hdfsOpenFile(fs, writePath, O_WRONLY|O_CREAT, 0, 0, 0); 8 if(!writeFile) { 9 fprintf(stderr, "Failed to open %s for writing!\n", writePath); 10 exit(-1); 11 } 12 char* buffer = "Hello, World!"; 13 tSize num_written_bytes = hdfsWrite(fs, writeFile, (void*)buffer, strlen(buffer)+1); 14 if (hdfsFlush(fs, writeFile)) { 15 fprintf(stderr, "Failed to 'flush' %s\n", writePath); 16 exit(-1); 17 } 18 hdfsCloseFile(fs, writeFile); 19 return 0; 20 }
编译命令: gcc hello_hdfs.c -I${HADOOP_HOME}/src/c++/libhdfs -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux -L${HADOOP_HOME}/c++/Linux-Linux-amd64-64/lib -lhdfs -L${JAVA_HOME}/jre/lib/amd64/server -ljvm -o hello_hdfs 运行的时候报:error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
export JAVA_HOME=/usr/lib/jvm/java-6-sun 查看文件是否写入,bin/hadoop fs -ls /tmp,或直接拷到本地以便查看:bin/hadoop fs -get /tmp/testfile.txt /home/test 如果写入不成功,一定要检查启动hadoop的是否与运行这个程序的是同一个用户! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论