【发布时间】:2019-10-19 13:20:31
【问题描述】:
由于我的数据消费者的一些限制,我需要“重写”一些 parquet 文件以将纳秒精度的时间戳转换为毫秒精度的时间戳。
我已经实现了它并且它有效,但我对它并不完全满意。
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)
我目前正在为每个文件在 lambda 中运行此作业,但我可以看到这可能很昂贵,并且如果作业花费的时间超过 15 分钟,则可能并不总是有效,因为这是 Lambda 可以运行的最长时间。
文件可以较大 (>500 MB)。
我可以考虑任何想法或其他方法吗?我无法使用 pyspark,因为我的数据集中有无符号整数。
【问题讨论】:
标签: python pandas amazon-s3 parquet pyarrow