如何使用dask在一个大文件中找到多个基于字典的计数?

ugmeyewa  于 2021-07-12  发布在  Spark
关注(0)|答案(0)|浏览(260)

我在集群上有一个很大的Parquet文件(33gb),我将使用dask读取它。它有某些列,但我感兴趣的是enddate和state。我需要属于一个状态的所有行的计数,并且计数变量中的键小于当前行中的日期。例如,如果一行有状态“tx”和结束日期2019-04-15,那么我想增加我的计数

mDict['TX']['2019-01'] += 1, 
mDict['TX']['2019-02'] += 1, 
mDict['TX']['2019-03'] += 1, 
mDict['TX']['2019-04'] += 1,

考虑到我的计算日期只能从2019年开始。mdict变量如下所示:

{'TX': {'2019-01': 0,
'2019-02': 0,
'2019-03': 0,
'2019-04': 0,
'2019-05': 0,
'2019-06': 0,
'2019-07': 0,
'2019-08': 0,
'2019-09': 0,
'2019-10': 0,
'2019-11': 0,
'2019-12': 0,
'2020-01': 0,
'2020-02': 0,
'2020-03': 0,
'2020-04': 0,
'2020-05': 0,
'2020-06': 0,
'2020-07': 0,
'2020-08': 0,
'2020-09': 0,
'2020-10': 0,
'2020-11': 0,
'2020-12': 0},
'CA': {'2019-01': 0,
'2019-02': 0,
'2019-03': 0,
'2019-04': 0,
'2019-05': 0,
'2019-06': 0,
'2019-07': 0,
'2019-08': 0,
'2019-09': 0,
'2019-10': 0,
'2019-11': 0,
'2019-12': 0,
'2020-01': 0,
'2020-02': 0,
'2020-03': 0,
'2020-04': 0,
'2020-05': 0,
'2020-06': 0,
'2020-07': 0,
'2020-08': 0,
'2020-09': 0,
'2020-10': 0,
'2020-11': 0,
'2020-12': 0},...

我有50个州在那里,每个州有24个月的值。所以总共有50x24个值。
传统上,我会使用iterrows()method在Dataframe上进行迭代,并在每个月使用for循环进行迭代,但我需要使用某种mapreduce范式并行执行,使其运行更快,然后聚合计数。
我希望这是可以实现的使用dask,如果不是,我也灵活地切换到其他一些框架,如Spark或其他任何东西,只要它得到的工作在最快的时间消耗不到60gb的ram和使用不到12核。感谢您的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题