簡體   English   中英

使用HDFS Java API從HDFS讀取文件

[英]Reading file from HDFS using HDFS Java API

您好,我正在嘗試使用Java API從HDFS讀取文件。

連接到HDFS並列出文件工作正常。

但是在嘗試讀取文件時出現了以下異常

函數調用:fs.copyToLocalFile(path,dPath);

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)創建新文件;

您可以通過兩種方式進行檢查。

  1. 檢查文件,用戶和文件組以及您的用戶和組的權限,您必須具有訪問文件的權限。
  2. 在遠程訪問文件時,可能是網絡路徑問題。

請同時檢查兩者。

https://stackoverflow.com/a/37661092/5797400-這可能會有所幫助。 這是我對could not obtain block: BlockMissingException解決方案could not obtain block: BlockMissingException
這是鏈接的要點:

  1. Namenode不會直接讀取或寫入數據。
  2. 客戶端(使用直接訪問HDFS的Java程序)與Namenode交互以更新HDFS命名空間並檢索塊位置以進行讀取/寫入。
  3. 客戶端直接與Datanode交互以讀取/寫入數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM