WedX - журнал о программировании и компьютерных науках

Переименовать несколько файлов данных

Я ищу решение для переименования нескольких файлов данных в HDFS, я сказал 26000 файлов данных /data/sample/_file.json.zip с тем же именем и удалением .zip из конца файла, такого как /data/ образец/_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': Слишком много совпадений

Этот код делает то, что я хочу, НО проблема в том, что он очень медленный, он хорош для 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
12.04.2019

Ответы:


1

Попробуйте выполнить цикл в bash

    for n in {0..26000} ; do
        long=$(printf %05d "$n")
        hdfs dfs -mv /data/sample/"$long"_file.json.zip /data/sample/"$long"_file.json
    done
12.04.2019
  • Как я могу сначала получить список из этого имени файла? Я получаю следующее сообщение 12.04.2019
  • + for n в '{0..26000}' ++ printf %05d 0 + long=00000 + hdfs dfs -mv /data/sample/00000_file.json.zip /data/sample/00000_file.json mv: `/data /sample/00000_file.json.zip': Нет такого файла или каталога 12.04.2019
  • abc12300021b9 есть ли у вас последовательность имен? 12.04.2019
  • В файле нет порядкового номера, количество файлов может быть 3000 или 45899, поэтому прочитайте файл один за другим из этого места /data/sample/*_file.json.zip и переименуйте его в /data/sample/*_file. json без .zip в качестве расширения. 12.04.2019
  • Пожалуйста, посмотрите, я добавил код, который работает за меня, и он хорош для 100 или 200 файлов данных, НО ОЧЕНЬ МЕДЛЕННО, когда я имею дело с тысячами файлов данных. Может ли кто-нибудь улучшить его производительность. 12.04.2019

  • 2

    Вы можете использовать скрипт свиньи, чтобы сделать это. Это должно выглядеть так:

    fs -mv /data/sample/abc12300021b9_file.json.zip /data/sample/abc12300021b9_file.json
    fs -mv /data/sample/AAAAAAAA.json.zip /data/sample/AAAAAAAA.json
    fs -mv /data/sample/AAAAAAAB.json.zip /data/sample/AAAAAAAB.json
    ....
    

    Допустим, файл был сохранен как mv_26000_files. Затем запустите:

    pig -f mv_26000_files
    

    Это будет намного быстрее, так как аутентификация вызывается только один раз, когда вы используете CLI HDFS каждый раз.

    Примечание. Pig доступен во всех основных дистрибутивах Hadoop (CDH, HDP, MapR).

    Рекомендации

    12.04.2019
    Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]