Хобрук: Ваш путь к мастерству в программировании

Фильтрация файлов в HDFS с временным диапазоном

У меня есть список файлов в HDFS, который нужно отфильтровать за последний период n hr с помощью сценариев bash.

$ find . -name "*" -type f                  \
    -newermt "2019-09-22 23:59:59"          \
    ! -newermt "2019-09-23 23:59:59"        \
    -exec ls -lt --time-style=long-iso {} +

попробовал, но все еще застрял с фильтрацией по дате, не могу продолжить

Ожидается отфильтровывать файлы в HDFS для любого n часового периода дня.

23.09.2019


Ответы:


1

Это адаптация этого ответа:

примечание: мне не удалось проверить это, но вы можете проверить это шаг за шагом, просмотрев вывод:

Обычно я бы сказал Никогда не анализировать вывод ls, но с Hadoop у вас нет выбора здесь же нет эквивалента find. (Начиная с 2.7.0 находка есть, но она очень ограничена согласно документация)

Шаг 1: рекурсивный ls

$ hadoop fs -ls -R /path/to/folder/

Шаг 2. используйте awk выбирать только файлы. Каталоги распознаются по своим разрешениям, начинающимся с d, поэтому мы должны их исключить.

$ hadoop fs -ls -R /path/to/folder/ | awk '!/^d/'

убедитесь, что вы не получите здесь забавные пустые строки или просто имя каталога ...

Шаг 3. используйте awk для обработки временного интервала и выбора каталогов. Я предполагаю, что у вас есть стандартный awk, поэтому я не буду использовать расширения GNU. Hadoop выведет формат времени как yyyy-MM-dd HH:mm. Этот формат можно сортировать, и он находится в полях 6 и 7. В приведенном ниже примере отфильтровываются все файлы между «2019-09-21 22:00» и «2019-09-21 23:00»:

$ hadoop fs -ls -R /path/to/folder/  \
   | awk -v tStart="2019-09-21 22:00" -v tEnd="2019-09-21 23:00" \
         '(!/^d/) && (($6" "$7) >= tStart) && (($6" "$7") <= tEnd)'
23.09.2019
  • в последнем выражении отсутствуют некоторые кавычки: '(!/^d/) && (($6 $7) ›= tStart) && (($6 $7) ‹= tEnd)' 03.09.2020
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..