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

Запись файлов CSV в HDFS с помощью Flume

Я пишу несколько файлов CSV из своей локальной файловой системы в HDFS, используя Flume.

Я хочу знать, какой будет наилучшая конфигурация для стока Flume HDFS, чтобы каждый файл в локальной системе копировался точно в HDFS как CSV. Я хочу, чтобы каждый CSV-файл, обрабатываемый Flume, был одним событием, сбрасывался и записывался как один файл. Насколько это возможно, я хочу, чтобы файл был точно таким же, без заголовков и т. Д.

Что мне нужно добавить к этим значениям, чтобы имитировать поведение, которое я хочу?

hdfs.batchSize = x
hdfs.rollSize = x
hdfs.rollInterval = x
hdfs.rollCount = x

Пожалуйста, укажите, есть ли другие переменные конфигурации агента Flume, которые мне также нужно изменить.

Если это не будет работать с использованием существующей конфигурации, нужно ли мне использовать собственный приемник, чтобы добиться того, чего я хочу?

Спасибо за ваш вклад.

P.S. Я знаю, что hadoop fs -put или -copyFromLocal больше подходят для этой работы, но поскольку это проверка концепции (показывающая, что мы можем использовать Flume для приема данных) , поэтому мне нужно использовать Flume.

07.05.2015

  • Почему бы не использовать команду hadoop fs -put <local_file> <hdfs_folder>? Я имею в виду, создаются ли локальные файлы динамически? Находятся ли локальные файлы на машине вне кластера? 07.05.2015
  • @frb Да, файлы создаются машиной. Кроме того, причина, по которой нам нужно использовать Flume, заключается в том, что это доказательство концепции (мы использовали Flume для обработки данных). Я прекрасно понимаю, что подойдет hadoop put или hadoop copyFromLocal. Спасибо. 11.05.2015

Ответы:


1

Вам придется отключить все свойства roll*, установив значения в 0. Это эффективно предотвратит перенос файлов в Flume. Как вы могли заметить, Flume работает на основе каждого события, в большинстве случаев событие представляет собой одну строку в файле. Чтобы также добиться сохранения самой файловой структуры, вам нужно будет использовать источник спула и активировать fileHeader:

fileHeader  false   Whether to add a header storing the absolute path filename.

установите это значение true. Он предоставит свойство %{file}, на которое вы можете ссылаться в своей спецификации пути стока hdfs.

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

Учебные заметки 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 и как создать свое первое приложение с помощью простых и понятных шагов, а..