下面两个命令是把文件从HDFS上下载到本地的命令。
get
使用方法:Hadoop fs -get [-ignorecrc] [-crc]
复制文件到本地文件系统。可用-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。
示例:
hadoop fs -get /user/hadoop/file localfile
hadoop fs -get hdfs://host:port/user/hadoop/file localfile
返回值:
成功返回0,失败返回-1。
copyToLocal
使用方法:hadoop fs -copyToLocal [-ignorecrc] [-crc] URI
除了限定目标路径是一个本地文件外,和get命令类似。
也可以用如下的程序可实现将HDFS上的文件下载到本地。
import java.net.URI; import java.io.OutputStream; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class FileCopy2Local { public static void main(String[] args) throws Exception { String dest = "hdfs://localhost:9000/user/laozhao0/cite2.txt"; String local = "/home/laozhao0/cite2.txt"; Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(dest),conf); FSDataInputStream fsdi = fs.open(new Path(dest)); OutputStream output = new FileOutputStream(local); IOUtils.copyBytes(fsdi,output,4096,true); } }