免费微网站哪个好用,在线网页代理浏览免费,网站建设是程序员吗,怎么美化网站介绍如何在 Windows 环境中, 将保存在 HDFS 上的文件导出到本机上数据导入到 HDFS 后当然也要有方法将数据从 HDFS 导出到本机系统上在 HADOOP JAVA API 所提供的 FileSystem 类就提供 copyToLocalFile 函数将文件复制回本机文件系统理论上这是可以轻易的做到这件事情但实际使…介绍如何在 Windows 环境中, 将保存在 HDFS 上的文件导出到本机上数据导入到 HDFS 后当然也要有方法将数据从 HDFS 导出到本机系统上在 HADOOP JAVA API 所提供的 FileSystem 类就提供 copyToLocalFile 函数将文件复制回本机文件系统理论上这是可以轻易的做到这件事情但实际使用时, 才发现一个问题当客户端用的是 windows 而不是 linux程序也不是在 cluster 主机上执行时此时调用 copyToLocalFile 函数Hadoop 会丢出一个例外:Cannot run program chmod: CreateProcess error2, ?t?Χ??????解决方法是在电脑上安装 cygwin这样 hadoop 就可以调用到 chmod 命令但如果要求所有使用者一定要在 window 上安装 cygwin 这样也挺怪的所以想到了另一个方法就是直接用 file stream 方式将 HDFS 数据读出后, 再写回本地端的文件系统这样就可以解决数据导出的问题/*将 HDFS 上文件, 导出至本机磁盘上*/public void exportFile(Path hdfsSource, String targetPath){Configuration conf new Configuration();conf.set(hadoop.job.ugi,hadoop,supergroup);String urihdfs://cloud-a:9000;try{FileSystem fs FileSystem.get(URI.create(uri),conf);FSDataInputStream in fs.open(hdfsSource);FileOutputStream fos new FileOutputStream(targetPath);int bytesRead;byte[] buffer new byte[4096];while ((bytesRead in.read(buffer)) 0) {fos.write(buffer, 0, bytesRead);}in.close();fos.close();//使用 copyToLocalFile 会丢出 Cannot run program chmod例外//fs.copyToLocalFile(hdfsSource, new Path(targetPath));} catch (Exception e) {System.out.println(e.getMessage());}}