pyspark如何将数据拆分成更小的位

时间:2016-09-15 14:53:03

标签: python-2.7 apache-spark parallel-processing pyspark memory-efficient

我的计算造成了大量的臃肿;我的计算进展如下:

  1. RDD条目是单个项目
  2. 我为值创建了这些条目的排列。这会造成大量的膨胀
  3. .flatMap关于这些价值观。现在至少有1000个条目
  4. groupByKey获得比起初更少的条目
  5. 在步骤3和/或4的某个地方,我遇到了内存错误。我创造了大量的集群;方式太大了,仍然会出现内存错误。

    如何将我的数据拆分成更小的块,以便我的工作节点不会因膨胀而过载?

    修改的 这是我的代码:

    rdd_processed = (
      rdd_source_data
      .map(lambda x: (x, creates_big_list(x)))  # value is ~1000 entries large
      .flatMap(lambda t: t)
      .groupByKey()
      .mapValues(list)
    )
    

    编辑2

    对原始rdd和更新的分组功能进行了分区(感谢提示):

    rdd_processed = (
      rdd_source_data
      .partitionBy(10000)
      .map(lambda x: (x, creates_big_list(x)))  # value is ~1000 entries large
      .flatMap(lambda t: (t[0], [t[1]]))
      .reduceByKey(lambda x, y: x+y)
    )
    

    似乎有所帮助,但还不够。

    我玩过partitionBy的大小,虽然我似乎无法让它不会溢出我的记忆。我用它了吗?

0 个答案:

没有答案