繁体   English   中英

在hdfs C API中调用hdfsOpenFile时出现Hadoop异常java.lang.NoSuchMethodError

[英]Hadoop Exception java.lang.NoSuchMethodError when calling hdfsOpenFile in hdfs C API

首先,我使用mvn和正确设置的环境变量构建了hadoop-2.7.2。 然后,我尝试在Apache网站上运行以下简单示例: C API libhdfs示例代码

#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);
}

然后我得到如下错误信息:

$不能从具有签名的组织org / apache / hadoop / fs / FileSystem类中找到方法创建(Lorg / apache / hadoop / fs / Path; Lorg / apache / hadoop / fs / permission / FsPermission; ZISJILorg / apache / hadoop / util /渐进式; Z)Lorg / apache / hadoop / fs / FSDataOutputStream;

$线程“主”中的异常java.lang.NoSuchMethodError:创建

$调用org.apache.hadoop.conf.FileSystem :: create((Lorg / apache / hadoop / fs / Path; Lorg / apache / hadoop / fs / permission / FsPermission; ZISJILorg / apache / hadoop / util / Progressable; Z )Lorg / apache / hadoop / fs / FSDataOutputStream;)失败了!

但是我确实可以在org.apache.hadoop.fs.FileSystem中找到“创建”函数: org.apache.hadoop.fs.FileSystem函数列表

有人知道发生了什么吗?

我必须在这里承认我的愚蠢问题。 我在链接定义中包含了错误的依赖关系。 因此,我的程序正在尝试从另一个库调用错误的create()...现在,我现在可以使用所有开源的hdfs API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM