首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HDFS Java API读取HDFS文件

使用HDFS Java API读取HDFS文件
EN

Stack Overflow用户
提问于 2013-10-21 12:49:19
回答 2查看 2.1K关注 0票数 0

Hi正在尝试使用Java从HDFS读取一个文件。

连接到HDFS并列出文件是很好的。

但是,在尝试读取文件时,将得到以下异常

函数调用: fs.copyToLocalFile(path,dPath);

代码语言:javascript
复制
java.io.IOException: Could not obtain block: blk_-747325769320762541_16269493 file=/user/s3t.txt
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.chooseDataNode(DFSClient.java:2266)
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.blockSeekTo(DFSClient.java:2060)
    at org.apache.hadoop.hdfs.DFSClient$DFSInputStream.read(DFSClient.java:2221)
    at java.io.DataInputStream.read(Unknown Source)
    at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:68)
    at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:47)
    at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:100)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:230)
    at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:163)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1222)
    at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:1203)
    at Access.main(Access.java:59)

注释:能够使用fs.createNewFile(myPath);创建新文件

EN

回答 2

Stack Overflow用户

发布于 2013-10-21 15:35:03

你可以用两种方式检查。

  1. 检查文件、文件的用户和组以及您的用户和组的权限,您必须拥有访问该文件的权限。
  2. 当您正在访问该文件时,可能是网络路径问题。

请检查一下这两个。

票数 0
EN

Stack Overflow用户

发布于 2016-06-06 15:27:25

https://stackoverflow.com/a/37661092/5797400 -这可能会有帮助。这是我对could not obtain block: BlockMissingException的解决方案。

下面是链接的要点:

  1. Namenode不直接读取或写入数据。
  2. 客户机(使用直接访问HDFS的Java程序)与Namenode交互,以更新HDFS命名空间并检索读/写的块位置。
  3. 客户端直接与Datanode交互以读取/写入数据。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19494991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档