我有大约2000万条记录的庞大数据集。它以镶木地板格式存储在s3中。文件夹结构如下:
每个实木复合地板文件具有以下内容:
<Order_Id><param1><param2><param3><param4>
使用Glue进行分区并在Athena中进行分区或在Spark集群中进行分区,并且目前不能。我需要从此结构中读取 500个订单ID ,时间为 1年。使用python和pyarrow引擎。
要读取一个Order_ID,大约需要3分钟的时间,即1天。 1天的2个order_ID需要6分钟,而2天的1个Order_ID也需要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)
1个order_ID大约需要5个小时。我需要帮助,以了解如何优化该过程,以便更快地完成该过程?