MapPartitions不执行print

时间:2017-03-23 05:10:10

标签: pyspark

我有一个问题,我希望有人可以向我解释。

我们假设我的数据如下:

  ('1', ['1', '1', '-1']),
  ('1', ['1', '2', '-2']),
  ('1', ['1', '3', '-3']),
  ('1', ['1', '4', '-4']),
  ('1', ['1', '5', '-5']),
  ('1', ['1', '6', '-6']),
  ('2', ['2', '7', '-7']),
  ('2', ['2', '8', '-8']),
  ('2', ['2', '9', '-9']) 

我将它存储在带有两个分区的RDD中。一个分区包含 key ='1'的数据,另一个分区包含 key ='2'的数据。现在,当我跑:

def do_something(partition):
    print('hello')
    for element in partition:
        if element[0] != '1':
            yield element

my_rdd_new = my_rdd.mapPartitions(do_something)

它不打印'hello',但my_rdd_new包含正确的数据子集,即:

  ('2', ['2', '7', '-7']),
  ('2', ['2', '8', '-8']),
  ('2', ['2', '9', '-9']) 

任何人都能解释为什么会发生这种情况吗?!

如果有帮助,我正在使用spark 2.0.1并在Jupyter IPython笔记本中运行代码。

更新:似乎 Jupyter IPython 是问题所在。我在命令提示符下运行它,它的工作原理。现在,问题是:为什么会发生以及如何解决?!

由于

0 个答案:

没有答案