使用java程序合并hdfs中的文件

使用java程序合并hdfs中的文件,java,hadoop,hdfs,bigdata,Java,Hadoop,Hdfs,Bigdata,我是大数据新手,正在从事一项小任务,需要将多个文件合并到hdfs中的单个文件中。我使用Java程序来实现这一点(将所有类似于prod*的文件合并到一个prod.txt文件中)。我已经搜索了帮助,到目前为止我编写的代码是: 公共类合并文件{ public static void main(String[] args) throws FileNotFoundException { // TODO Auto-generated method stub String srcPath =

我是大数据新手,正在从事一项小任务,需要将多个文件合并到hdfs中的单个文件中。我使用Java程序来实现这一点(将所有类似于prod*的文件合并到一个prod.txt文件中)。我已经搜索了帮助,到目前为止我编写的代码是:

公共类合并文件{

public static void main(String[] args) throws FileNotFoundException {
    // TODO Auto-generated method stub

    String srcPath = "/user/demouser/first/prod*"; 
    String dstPath = "/user/demouser/second/prod.txt"; 
    Configuration conf = new Configuration(); 
    conf.set("fs.default.name","http://hostname:portnumber/");
    try 
    { 
        FileSystem hdfs = FileSystem.get(conf); 
        FileUtil.copyMerge(hdfs, new Path(srcPath), hdfs, new Path(dstPath), false, conf, null); 
        } 
    catch (IOException e) 
    { }

    }
}


它不起作用,我不知道如何解决这个问题。我也不理解“fs.default.name”的工作原理。请提供帮助。

您需要一个真实的主机名和端口号来替换“”,您的主机名和端口号必须可以从计算机上访问。它应该是文件系统的位置

我已经有了。。我刚刚用虚拟名称替换了它。文件也存在于该位置。您需要查看正在捕获的IOException,在这里捕获它,然后什么也不做-查看javadoc以获取更多异常信息,并在google上搜索“java异常处理”。HDFS不是HTTP协议。这是关于将srcPath更改为文件夹名的RPCwhat。我也很好地使用这个api,请显示您的日志,该属性已弃用。它应该是
fs.defaultFS
,它需要指向namenodebedes,您正在重新发明轮子。搜索一个叫做filecrush的东西。或者至少,Pig可以在大约3行代码中完成这项工作