dask - Dask - 将时间戳列转换为日期并设置为索引终止进程
问题描述
我是 Dask 的新手,
我有 152 个镶木地板文件,平均 200MB。(32GB 机器 RAM)
每个文件都有时间戳列,我想将该列设置为分区(索引)。
如果我将 Timestamp 列设置为索引,则分区太多,所以我需要将其转换为 Date -->
ddf = dd.read_parquet('gs://bucket_name/*.parquet')
ddf['partition'] = dd.to_datetime(ddf['event_time'], format='%Y/%m/%d')
我成功地运行了其他操作,如 groupby 等。
如果我想要带有分区的镶木地板文件以按分区快速查询,那么处理这种情况的最佳做法是什么?
解决方案
这个答案会很有用。具体来说,您希望将时间戳列设置为具有特定频率的索引。
# 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')
请注意,如果您的数据已按日期时间排序,则可以使此过程更加高效,请参阅上面链接的答案中的详细信息。
推荐阅读
- elasticsearch - Kibana 使用延迟显示登录发现
- postgresql - how to prevent postgres views calling redundant functions
- python-3.x - 我在这里的编码有什么问题?
- ruby-on-rails - has_many 通过rails中的动态条件
- python - 诊断间歇性/“滞后”的 Websocket 数据收集
- c# - Mdi 父面板后面的启动画面(等待表单)
- php - EXIF 旋转适用于 iOS,但不适用于 Android?
- python - 如何从包含 0xEB 字符的文件中读取?
- functional-programming - 如何阅读此功能代码
- python - 根据dataframe split获取一系列数据