я использую hadoop apache 2.7.1 на centos и я новичок в centos
если я хочу вычислить контрольную сумму md5 для определенного файла в hadoop, я могу выполнить следующую команду
hdfs dfs -cat /hadoophome/myfile | md5sum
но как, если я хочу вычислить контрольную сумму md5 для всех файлов в каталоге hadoophome hdfs
я имею в виду, как написать сценарий, который перебирает все файлы в / hadoophome, который является конкретным каталогом hdfs, а затем записывает каждое имя файла плюс его контрольную сумму md5 в новой строке в один файл, содержащий все результаты
примечание: я вынужден катить файл hdfs, а затем использовать md5sum для этого файла, а не
hadoop fs -checksum
потому что я хочу значение md5
я начал со следующего сценария
for i in $(hadoop fs -ls /hadoophome | sed '1d;s/ */ /g' | cut -d\ -f8 ); do hdfs dfs -cat "$i" | md5sum ; done;
Вы можете использовать команду find для exec
команда для каждого файла, найденного в данном каталоге и его подкаталогах, а затем перенаправить вывод в другой файл:
# find /hadoophome -type f -exec md5sum "{}" \; >> /tmp/file-list.txt
Результат выглядит так:
# find /bin/ -type f -exec md5sum "{}" \;
...snip...
2de30aeb16259b7051520d2c6c18b848 /bin/mlnx_dump_parser
e1f7d74a86c8fa85588e239f974a6d24 /bin/ibv_task_pingpong
9fbb31d5760f35911eeb644d99c615ab /bin/mlnx_get_vfs.pl
9f43d9718c5e41727a6520080158b494 /bin/flint_ext
2f315aa63072d96718e7fe268643869c /bin/mlnx_perf
f31173018f34839e24d5ecf25c811a30 /bin/fwtrace
361cb80244b429f4df29ea2555eee134 /bin/mlnx_qcn
c17cd67a2e996881d9157ec30b7b215f /bin/mdevices_info
49f03faf85a80d54eedea5ef69358f01 /bin/mlnx_qos
...snip...