在斯巴克,我可以做
sc.parallelize([(0, 0), (1, 1), (0, 2), (1, 3), (0, 4), (1, 5)], 2).partitionBy(2)
但是,这首先将数据分布在集群的节点上,然后再次洗牌。当数据从驱动程序输入时,有没有办法立即按键分区?
在您提供的示例中,Spark不知道数据的分区,直到您打算通过分区ByKey()
明确提及这一点。
但是如果数据已经以适当的方式组织,Spark可以利用数据的自然分区。例如,
因此,数据、文件系统等的性质会影响Spark中的分区。