Как правильно (масштабно) прочитать много файлов ORC в искру - PullRequest
0 голосов
/ 03 июля 2018

Я хотел бы использовать EMR и Spark для обработки отчета об инвентаризации AWS S3, сгенерированного в формате ORC, который содержит много файлов ORC (сотни), а общий размер всех данных составляет около 250 ГБ.

Есть ли определенный или лучший способ чтения всех файлов в одном наборе данных? Кажется, что я могу передать методу sqlContext.read().orc() список файлов, но я не был уверен, правильно ли будет масштабироваться / распараллеливаться, если я передам ему большой список из сотен файлов.

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

Заранее спасибо за ваши предложения.

1 Ответ

0 голосов
/ 05 июля 2018

Просто укажите папку, в которой находятся ваши файлы орков. Spark автоматически обнаружит их все и поместит в один DataFrame.

sparkSession.read.orc("s3://bucket/path/to/folder/with/orc/files")

Вам не нужно особо заботиться о масштабируемости, поскольку все выполняется с помощью spark на основе конфигурации по умолчанию, предоставленной EMR, в зависимости от выбранного типа экземпляра EC2 . Вы можете поэкспериментировать с количеством подчиненных узлов и их типом экземпляра.

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

...