У меня есть большой набор данных в Hadoop с данными для разных клиентов.Создание большого количества небольших файлов XML в Hadoop
Каждый заказчик может иметь много элементов заказа в этом наборе данных, где многие могут варьироваться от нескольких сотен до миллионов в день.
В наборе данных около 50 000 клиентов.
Что мне нужно сделать, это создать ежедневный XML-отчет для каждого клиента, где данные для каждого клиента находятся в собственном файле. Это означает, что некоторые файлы будут крошечными, но другие будут довольно большими (представление XML довольно многословно и содержит много полей).
Написание карты Уменьшение кода для создания XML является тривиальным, и первым моим подходом к этой проблеме было использование нескольких выходов Hadoop для записи файла на одного клиента в редукторе. Хотя это работает, все эти небольшие файлы будут оказывать значительное давление на Namenode. Кроме того, мне нужно экспортировать все эти файлы из кластера Hadoop и поместить их в стандартную файловую систему, где веб-приложение будет обслуживать их, поэтому экспорт таких файлов может также вызвать проблемы.
Еще одна идея, с которой я столкнулся, заключалась в создании отдельного файла последовательности с ключом, равным клиенту, и значением, содержащим XML для одной транзакции, предварительно отсортированной в том порядке, который будет составлять отчет XML. Затем я могу экспортировать один файл последовательности и закодировать простую автономную программу Java для чтения файлов последовательности и выписать файл для каждого клиента. Я проверил это на небольшом наборе данных, и, надеюсь, производительность будет в порядке.
Неужели кто-то еще сталкивается с такой проблемой, как Hadoop, и есть какие-либо другие идеи о том, как решить эту проблему?
Подходит ли подход к файлу последовательности как разумный способ?
Спасибо за информацию. MapFiles звучат потенциально очень полезными - мне придется поэкспериментировать с ними и посмотреть, как я могу использовать их для своей проблемы. –