hdfs文件比较

svmlkihl  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(308)

既然没有hdfs文件,我如何比较两个hdfs文件 diff ?
我在考虑使用配置单元表,从hdfs加载数据,然后在两个表上使用join语句。有没有更好的办法?

qvtsj1bj

qvtsj1bj1#

最简单的答案可能是:

diff <(hadoop fs -cat file1) <(hadoop fs -cat file2)

它只会在你的本地机器上运行。如果这太慢了,那么是的,您必须使用hive和mapreduce做一些事情,但是这有点棘手,并且不能完全匹配diff所做的顺序比较。

g52tjvyc

g52tjvyc2#

根本没有 diff 命令,但实际上可以在shell中使用 diff 命令:

diff <(hadoop fs -cat /path/to/file) <(hadoop fs -cat /path/to/file2)

如果您只想知道两个文件是否相同,而不想知道它们之间的区别,我建议使用另一种基于校验和的方法:您可以得到两个文件的校验和,然后比较它们。我认为hadoop不需要生成校验和,因为它们已经被存储了,所以应该很快,但我可能错了。我不认为有命令行选项,但您可以通过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;

相关问题