Считать файл паркета из s3 python - PullRequest
0 голосов
/ 01 мая 2020

У меня есть огромный набор данных около 20 миллионов записей. Хранится в паркетном формате в s3. Структура папок выглядит следующим образом: enter image description here

Каждый файл паркета имеет следующее содержимое: <Order_Id><param1><param2><param3><param4>

Разделение с использованием клея и наличие в Афине или наличие искры кластер находится в стадии разработки, и не возможно прямо сейчас. Мне нужно прочитать 500 идентификаторов заказа из этой структуры для промежутка 1 года . Использование python и pyarrow engine.

Для чтения одного Order_ID требуется около 3 минут в течение 1 дня. 2 идентификатора order_ID на 1 день, занимающий 6 минут, и 1 идентификатор Order_ID на 2 дня, равный 6 минутам. Поэтому, когда я увеличиваю период времени или Заказы, происходит линейное повышение во времени.

def process(self, date_val, order_list, param_list):
        key_list = self.fetch_keys_for_date(date_val)
        for i1, key in enumerate(key_list):
            df = self.read_individual_key_data(key)
            for i2, order in enumerate(order_list):
                for param in param_list:
                    order_param_level_df = self.filter_data_by_orders_and_param(df, order_id, param)
                    self.write_data_to_disk(order_param_level_df, date_val, order, param)

Это занимает около 5 часов для 1 order_ID. Мне нужна помощь, чтобы понять, как мне оптимизировать этот процесс, чтобы процесс завершался быстрее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...