pyspark分区无法正确分区

时间:2018-12-10 10:05:05

标签: pyspark partition

我一直在寻找试图找到问题所在的年龄。

我有一个pyspark数据帧,并按以下方式对其进行分区:

data.registerTempTable('data')
query = """
        SELECT *
        From data
        DISTRIBUTE BY id1, id2, id3
        SORT BY id1, id2, id3, date
    """           
data = self.sql(query, store=False)

然后我想对分区应用一些代码,

data_list = data.rdd.mapPartitions(lambda x:func_1(form_set(x)))

我在内部函数中

def form_set(partition):
    tracker_index =0
    for row in partition:
        tracker_index+=1
        ##some actions##
        print("id1:{}, id2:{}, id3:{}, ind:{}".format(id1,id2,id3,tracker_index)
    return partition

然后是一个仅接受form_set输出的外部函数

def func_1(partition):
    #actions#
    return partition

函数中的操作依赖于数据在正确的分区中,即ID1,ID2和ID3相同的所有数据应在同一分区中。 但是,当我查看打印日志时,会显示

id1:1, id2:2, id3:3, ind:1
id1:1, id2:2, id3:3, ind:1
id1:2, id2:2, id3:3, ind:2
id1:1, id2:2, id3:3, ind:1
id1:2, id2:2, id3:3, ind:2

我希望这是

id1:1, id2:2, id3:3, ind:1
id1:1, id2:2, id3:3, ind:2
id1:2, id2:2, id3:3, ind:1
id1:1, id2:2, id3:3, ind:3
id1:2, id2:2, id3:3, ind:2

我真的不知道该如何解决此问题。我是pyspark的新手,但是已经搜索了很长时间,找不到答案。任何帮助将不胜感激。 谢谢

0 个答案:

没有答案