Вам лучше использовать Sqoop.Потому что вы можете в конечном итоге делать именно то, что делает Sqoop, если вы идете по пути его построения самостоятельно.
В любом случае, концептуально вам понадобится специальный преобразователь с настраиваемым форматом ввода с возможностью считывания секционированных данных из источника.В этом случае для использования параллелизма потребуется столбец таблицы, на который должны быть разбиты данные.Секционированная исходная таблица была бы идеальной.
DBInputFormat не оптимизирует вызовы в исходной базе данных.Полный набор данных нарезан на сконфигурированное количество разбиений InputFormat.Каждый из картографов будет выполнять один и тот же запрос и загружать только часть данных, соответствующую разбиению.Это приведет к тому, что каждый маппер выдаст один и тот же запрос вместе с сортировкой набора данных, чтобы он мог выбрать свою часть данных.
Этот класс, похоже, не использует преимущества таблицы с разделенными источниками.Вы можете расширить его для более эффективной обработки секционированных таблиц.
Hadoop имеет структурированные форматы файлов, такие как AVRO, ORC и Parquet.
Если ваши данные не требуют хранения в столбчатом формате (используется в основном для случаев использования OLAP, когда требуется выбрать только несколько столбцов большого набора столбцов), используйте AVRO.