Я ищу решение переименовать несколько файлов данных в HDFS, я, скажем, 26000 файлов данных /data/sample/_file.json.zip с тем же именем и удаляю .zip из конца файла, как/data/sample/_file.json
что я хочу сделать, как ..
Для одного файла я могу сделать как
hdfs dfs -mv /data/sample/abc12300021b9_file.json.zip /data/sample/abc12300021b9_file.json
Что бы я хотел сделатькак сделать это переименовать все 26000 файлов данных, как, я получаю следующее сообщение
hdfs dfs -mv /data/sample/*_file.json.zip /data/sample/*_file.json
mv: `/data/sample/*_file.json ': слишком много совпадений
Thisкод делает то, что я хочу, но проблема в том, что он очень медленный, он хорош для 100 или 200 файлов данных, ОЧЕНЬ МЕДЛЕННО, когда я детализирую тысячи файлов.
#!/bin/bash
source_dir=/data/sample/
$(hdfs dfs -test -e ${source_dir})
hdfs dfs -ls "${source_dir}/*.zip" | awk '{print $8}' | while read FILE; do
FILENAME="$(basename "${FILE}")"
new_name=${FILENAME::-4}
hdfs dfs -mv "${source_dir}/${FILENAME}" "${source_dir}/${new_name}"
done