1.16总结
Java代码
package HDFSApi;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.;
import java.io.;
public class HDFSApi {
/**
-
下载文件到本地
-
判断本地路径是否已存在,若已存在,则自动进行重命名
/
public static void copyToLocal(Configuration conf, String remoteFilePath, String
localFilePath) throws IOException {
FileSystem fs = FileSystem.get(conf);
Path remotePath = new Path(remoteFilePath);
File f = new File(localFilePath);
/ 如果文件名存在,自动重命名(在文件名后面加上 0, 1 ...) */
if (f.exists()) {
System.out.println(localFilePath + " 已存在.");
Integer i = 0;
while (true) {
f = new File(localFilePath + "" + i.toString());
if (!f.exists()) {
localFilePath = localFilePath + "" + i.toString();
break;
}
}
System.out.println("将重新命名为: " + localFilePath);
}// 下载文件到本地
Path localPath = new Path(localFilePath);
fs.copyToLocalFile(remotePath, localPath);
fs.close();
}
/**
- 主函数
*/
public static void main(String[] args) {
Configuration conf = new Configuration();
conf.set("fs.default.name","hdfs://node1:8020");
String localFilePath = "E:/text.txt"; // 本地路径
String remoteFilePath = "/user/root/text.txt"; // HDFS 路径
try {
HDFSApi.copyToLocal(conf, remoteFilePath, localFilePath);
System.out.println("下载完成");
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果
(3)将HDFS中指定文件的内容输出到终端中;
java代码
package HDFSApi;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.;
import java.io.;
public class HDFSApi {
/**
- 读取文件内容
*/
public static void cat(Configuration conf, String remoteFilePath) throws IOException {
FileSystem fs = FileSystem.get(conf);
Path remotePath = new Path(remoteFilePath);
FSDataInputStream in = fs.open(remotePath);
BufferedReader d = new BufferedReader(new InputStreamReader(in));
String line = null;
while ( (line = d.readLine()) != null ) {
System.out.println(line);
}
d.close();
in.close();
fs.close();
}

浙公网安备 33010602011771号