【问题标题】:Dask - Convert Timestamp column to date and set as index killed the processDask - 将时间戳列转换为日期并设置为索引终止进程
【发布时间】:2021-04-28 10:52:22
【问题描述】:

我是 Dask 的新手,

我有 152 个 parquet 文件,平均大小为 200MB。(32GB 机器 RAM)

每个文件都有 Timestamp 列,我想将该列设置为分区(索引)。

如果我将 Timestamp 列设置为索引,则分区太多, 所以我需要将它转换为日期-->

ddf = dd.read_parquet('gs://bucket_name/*.parquet')
ddf['partition'] = dd.to_datetime(ddf['event_time'], format='%Y/%m/%d')

我成功运行了 groupby 等其他操作。

如果我想要带有分区的 parquet 文件以按分区快速查询,处理这种情况的最佳做法是什么?

【问题讨论】:

    标签: dask dask-dataframe


    【解决方案1】:

    这个answer 会很有用。具体来说,您希望将时间戳列设置为具有特定频率的索引。

    # note that specifying npartitions is optional, but
    # can be useful if for some reason there are too
    # many partitions
    ddf = ddf.set_index('partition', npartitions=10)
    
    # you can also repartition it to get the desired frequency
    # (e.g. daily)
    ddf = ddf.repartition(freq='1D')
    

    请注意,如果您的数据已按日期时间排序,则可以使此过程更加高效,请参阅上面链接的答案中的详细信息。

    【讨论】:

    • 问题是内核在我重新分区之前就死了
    猜你喜欢
    • 2016-11-26
    • 2016-10-05
    • 2013-09-27
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多