鍍金池/ 問(wèn)答/人工智能/ spark groupby 之后相同字段 的數(shù)據(jù) 是處于同一個(gè)分區(qū)嗎?

spark groupby 之后相同字段 的數(shù)據(jù) 是處于同一個(gè)分區(qū)嗎?

假定一個(gè)RDD 存在十個(gè)分區(qū), 當(dāng)對(duì)這個(gè)RDD進(jìn)行g(shù)roupby之后得到一個(gè)新的RDD,相同字段的數(shù)據(jù)是否 處于同一個(gè)分區(qū)?

我測(cè)試結(jié)果查看是相同分組字段的數(shù)據(jù)被劃分到了相同分區(qū), 并且同一個(gè)分區(qū)可以存在其他字段的數(shù)據(jù)。

延伸問(wèn)題:
(1)如果說(shuō)相同字段的數(shù)據(jù)處于同一分區(qū)那么 groupBy之后得到的groupByRDD.mapValues 獲取到這個(gè)字段對(duì)應(yīng)的所有的values數(shù)據(jù),當(dāng)數(shù)據(jù)量大的時(shí)候
groupByRdd.mapValues(_.tolist().sortby )就會(huì)產(chǎn)生內(nèi)存溢出。
這個(gè)理解對(duì)嗎

回答
編輯回答
卟乖

groupbykey才會(huì)處于同一分區(qū)吧。
理論上mapValues如果過(guò)大確實(shí)應(yīng)該溢出,我但測(cè)試了一組超大的數(shù)據(jù),沒(méi)有溢出。
根據(jù)文檔和日志猜測(cè),當(dāng)后續(xù)有行動(dòng)操作,觸發(fā)mapValues操作,mapvalues的rdd會(huì)序列化到磁盤(pán)上,所以估計(jì)不是一起讀取到內(nèi)存中,而是通過(guò)磁盤(pán)交換,讀一點(diǎn)寫(xiě)一點(diǎn)。

2018年5月19日 04:28