Awswrangler: Паркет читается в несколько раз больше ожидаемого пространстваPython

Программы на Python
Ответить
Anonymous
 Awswrangler: Паркет читается в несколько раз больше ожидаемого пространства

Сообщение Anonymous »

В Lambda я использую AWS Wrangler для считывания данных из набора паркетов, разделенных по датам, и объединения их вместе. Я делаю это, вызывая wr.s3.read_parquet в цикле, компилируя загруженные фреймы данных в список, а затем объединяя их с помощью pandas.concat. По сути, я просто делаю следующее.

Код: Выделить всё

# Load the data for each partition, adding date column
df_list = []

for date_str, key_set in partition_keys.items():
for parquet_key in key_set:
# Read in the parquet as chunked data.
dfs = wr.s3.read_parquet(path=f"s3://{bucket}/{parquet_key}", chunked=True)

# Set the date column for each chunk and append to list
for df in dfs:
df[date_col] = date_str
df_list.append(df)

# Concatenate into copy
concat_df = pd.concat(df_list, ignore_index=True, copy=True)
Однако Lambda продолжает выходить из строя из-за ошибки «Недостаточно памяти», несмотря на то, что размер файлов составляет всего около одного гигабайта, а Lambda предоставляет 10 ГБ памяти.
Когда я добавил в код несколько сообщений отслеживания, я обнаружил, что паркеты занимают гораздо больше места в виде DataFrame, чем в виде файлов в S3. На скриншотах ниже я вижу, что файлы занимают примерно в 60 раз больше места в памяти, чем в S3.
Изображение

Изображение

Кто-нибудь знает, почему это происходит? Есть ли способ решить эту проблему?
Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/798 ... cted-space
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»