AWS上的巨大数据集操作问题

时间:2019-05-27 09:07:25

标签: pandas amazon-ec2 dask

我有5个csv文件,每个文件的大小约为20gb。

我做了所有代码,以便将它们与大熊猫进行合并并合并为每个1 go的样本。

现在,我将代码用于AWS EC2上的真实数据集,并且仍与熊猫一起使用。

我的问题是:

  1. 我认为使用GPU来解决此问题毫无用处?我错了吗?
  2. 我应该使用除Pandas之外的其他库(例如Dask吗?)
  3. 我应该为EC2选择哪种特性? (几个CPU,或者只有一个??……)
  4. 目前,我的代码没有给出错误,但是我的最终数据集只有100行。数据是否太大,所以熊猫会自动忽略很多行?

非常感谢

这是我必须在这些巨大的数据集上执行的那种代码的示例:

as_country = pd.merge(as_country, conventions_data, left_on='country', right_on = 'country_x', how = 'left')
as_country = as_country.dropna()
as_country = as_country.drop(columns=['countryname'])
as_country.enforce_date = as_country.enforce_date.astype(int)


as_country = as_country.drop(columns=['country_x', 'country_y','country_code','year'])
as_country['date_minus_enforcedate'] = as_country['date'] - as_country['enforce_date']
as_country['date_minus_enforcedate'] =  np.where((as_country.date_minus_enforcedate <= 0), -1, 1)
## AS_country will be just for one day and group by:

as_country = as_country.groupby(['as', 'country']).mean().reset_index()


as_country = as_country.drop(columns=['date', 'enforce_date'])
as_country_columns = list(as_country.columns)
as_country_columns.remove('as')
as_country_columns.remove('country')
as_country = as_country.pivot(index='as', columns='country', values=as_country_columns)
as_country = as_country.fillna(0)

1 个答案:

答案 0 :(得分:0)

让我们将此作为扩展注释。

  1. 我认为使用GPU来解决此问题没有用吗?我错了吗?

如果是一次性计算,则为是。否则,请查看cudfrapids.ai中的blazingSQL

  1. 我应该使用除Pandas之外的其他库(例如Dask吗?)

如果您的计算在内存中运行,则不需要Dask,请参见docs

  1. 我应该为EC2选择哪种特征? (几个CPU,或只有一个??)

我建议您估计最大的RAM使用量,并增加10-20%。内核数量在某种程度上是相关的(即您不能拥有1个内核和200GB的内存)

  1. 目前,我的代码没有给出错误,但是我的最终数据集只有100行。数据是否太大,所以熊猫会自动忽略很多行?

对于这个问题,这应该是您主要关心的问题,应该逐步检查命令。对我来说很奇怪,您先删除ascountry列,然后使用它们进行旋转。