Из-за некоторых ограничений потребителя моих данных мне нужно «переписать» некоторые файлы паркета, чтобы преобразовать временные метки с точностью до наносекунды в временные метки с точностью до миллисекунды.
Я реализовал это, и оно работает, но я не полностью удовлетворен этим.
import pandas as pd
df = pd.read_parquet(
f's3://{bucket}/{key}', engine='pyarrow')
for col_name in df.columns:
if df[col_name].dtype == 'datetime64[ns]':
df[col_name] = df[col_name].values.astype('datetime64[ms]')
df.to_parquet(f's3://{outputBucket}/{outputPrefix}{additionalSuffix}',
engine='pyarrow', index=False)
В настоящее время я запускаю это задание в лямбде для каждого файла, но я вижу, что это может быть дорого и не всегда работать, если задание длится более 15 минут, поскольку это максимальное время, которое может запустить лямбда.
Файлы могут быть на большей стороне (> 500 МБ).
Какие-нибудь идеи или другие методы, которые я мог бы рассмотреть? Я не могу использовать pyspark, поскольку в моем наборе данных есть целые числа без знака.