识别一个分区:火花mapPartitionsWithIndex:识别一个分区
mapPartitionsWithIndex(index, iter)
的方法,结果为驱动功能到每个分区。我知道我们可以使用“index”参数来跟踪分区。
许多示例都使用此方法使用“index = 0”条件删除数据集中的标题。但是我们如何确保读取的第一个分区(翻译“index”参数等于0)确实是标题。它是随机的或基于分区器(如果使用的话)。
识别一个分区:火花mapPartitionsWithIndex:识别一个分区
mapPartitionsWithIndex(index, iter)
的方法,结果为驱动功能到每个分区。我知道我们可以使用“index”参数来跟踪分区。
许多示例都使用此方法使用“index = 0”条件删除数据集中的标题。但是我们如何确保读取的第一个分区(翻译“index”参数等于0)确实是标题。它是随机的或基于分区器(如果使用的话)。
Isint它是随机的或基于分区器(如果使用的话)。 ?它不是随机的,但是分区号码。你可以在它下面简单的例子
val base = sc.parallelize(1 to 100, 4)
base.mapPartitionsWithIndex((index, iterator) => {
iterator.map { x => (index, x) }
}).foreach { x => println(x) }
结果:(0,1)(1,26)(2.51)(1.27)(0,2)(0,3)( 0,4)(1,28)(2,52) (1,29)(0,5)(1,30)(1,31)(2,53)(1,32)(0,6) ......
据我所知,从1到25的数字在一个分区中,索引等于0. 我的问题是,这是一个保证,前25个数字组合在一起,他们也进入分区(0)。 @bdr –
这取决于您的数据如何分区。在我的例子中,它的数字是100/4。但在字符串的情况下,然后散列分区程序。底线取决于你的分区器。如果配对RDD,默认分区程序是哈希分区程序。 – BDR
因此,除非实施/另有说明,否则假设'index = 0' 将是第一行。 @BDR –
你能指点我们其中的一个数字例子吗? – hadooper