Csv 2个Hdfs文件比较

Csv 2个Hdfs文件比较,csv,hdfs,Csv,Hdfs,我在/hadoop/hdfs/location1中有6000多个.csv文件,在/hadoop/hdfs/location2中有6100多个.csv文件 我想比较这两个hdfs目录并找出文件的差异。差异.csv文件(非相似)应反映在第三个hdfs目录中(/hadoop/hdfs/location3)。我不确定我们是否可以像在unix到hdfs文件系统中那样使用diff命令 任何关于如何解决这一问题的想法都是值得赞赏的 Anshul您可以使用一些python(perl/等)脚本来检查它。根据您的特

我在
/hadoop/hdfs/location1
中有6000多个.csv文件,在
/hadoop/hdfs/location2
中有6100多个.csv文件

我想比较这两个hdfs目录并找出文件的差异。差异.csv文件(非相似)应反映在第三个hdfs目录中(
/hadoop/hdfs/location3
)。我不确定我们是否可以像在unix到hdfs文件系统中那样使用diff命令

任何关于如何解决这一问题的想法都是值得赞赏的

Anshul

您可以使用一些python(perl/等)脚本来检查它。根据您的特殊需要和速度,您可以先检查文件大小。文件名相同吗?创建日期是否相同等

如果您想使用python,请查看


我认为以下步骤将解决您的问题:

  • 将位于第一个位置的文件名列表放入一个文件中
  • 将第二个位置文件放入另一个文件中
  • 使用unix命令查找两个文件之间的差异
  • 无论您发现了什么差异文件,请将这些文件复制到其他位置

  • 我希望这对你有帮助。否则请告诉我。

    我们没有hdfs命令来比较文件。 检查下面的帖子,我们可以通过编写PIG程序来实现,或者我们需要编写Map-Reduce程序


    看看下面的帖子,它提供了如何比较两个HDFS文件的答案。您需要将此扩展到2个文件夹

    您可以使用Java API轻松实现这一点,并创建一个小应用程序:

    FileSystem fs = FileSystem.get(conf);
    chksum1 = fs.getFileChecksum(new Path("/path/to/file"));
    chksum2 = fs.getFileChecksum(new Path("/path/to/file2"));
    return chksum1 == chksum2;
    

    diff命令以有序的方式提供差异,因此在内容方面,您应该小心地在文件比较中使用它。例如,让文件X有三行,每行分别有A、B、C。第二个文件Y具有cba。Diff将告诉您文件不同,但实际上从记录的角度来看,内容是相同的。
    FileSystem fs = FileSystem.get(conf);
    chksum1 = fs.getFileChecksum(new Path("/path/to/file"));
    chksum2 = fs.getFileChecksum(new Path("/path/to/file2"));
    return chksum1 == chksum2;