首页 > 试题广场 >

小赵在测试spark的时候,写了如下的代码 do

[问答题]
小赵在测试spark的时候,写了如下的代码
do

lines = sc.textFile("data.txt")

pairs = lines.map(lambda s: (s, 1))

counts = pairs.groupByKey(lambda a, b: a + b)

结果运行时等待了一段时间直接报错,data.txt文件较大,小赵对其进行抽样后结果如下:

data

apple

apple

apple

new

name

apple

apple

work

as

请分析报错的原因以及解决方案
可以从数据的结构看出来,apple的出现频率是远远大于其他单词的,所以出现这个问题,数据倾斜以后,内存溢出,所以我需要解决的是数据倾斜问题,首先要修改持久化方式,使用内存和硬盘进行持久化的策略,然后就是解决数据倾斜的问题,这里我们解决数据倾斜可以使用随机前缀,使用reduceBykey(比groupBykey效率高)算子聚合之后再把随机前缀去掉,在进行一次reduceBykey的操作就可以解决这个问题了
发表于 2019-03-17 08:45:26 回复(0)