outFile = <Path to the the file including name of the new file> //e.g. hdfs://localhost:<port>/foo/bar/baz.txt
FileSystem hdfs =FileSystem.get(new URI("hdfs://<NameNode Host>:<port>"), new Configuration());
Path newFilePath=new Path(outFile);
FSDataOutputStream out = hdfs.create(outFile);
// put in a while loop here which would read until EOF and write to the file using below statement
out.write(buffer);
2条答案
按热度按时间zbq4xfa01#
请告诉我你的问题是否正确。1-您要将文件复制到远程位置。2-客户端计算机不是hadoop集群的一部分。3-它可能不包含hadoop所需的库。
最好的方法是webhdfs,即restapi
cl25kdpy2#
有两种方法可以实现这一点:
您可以使用scp提取数据并将其存储在临时位置,然后将其复制到hdfs并删除临时存储的数据。
如果您不想将其保持为两步过程,可以编写一个程序,从远程机器读取文件,并将其直接写入hdfs。
这个问题以及注解和答案在阅读文件时非常方便,而您可以使用下面的代码段来编写hdfs。
假设buffer=501024,如果您有足够的io容量(取决于处理器),或者您可以使用101024之类的低得多的值