使用collectasmap()应用广播变量时,广播变量并不包含所有值。 e.g。
val emp = sc.textFile("...text1.txt").map(line => (line.split("\t")(3),line.split("\t")(1))).distinct()
val emp_new = sc.textFile("...text2.txt").map(line => (line.split("\t")(3),line.split("\t")(1))).distinct()
emp_new.foreach(println)
val emp_newBC = sc.broadcast(emp_new.collectAsMap())
println(emp_newBC.value)
当我检查emp_newBC中的值时,我看到并非所有来自emp_new的数据都出现了。我错过了什么?
提前致谢。
答案 0 :(得分:1)
问题是emp_new是元组的集合,而emp_newBC是广播的地图。如果要收集地图,则会删除重复的键,因此您的数据较少。如果要返回所有元组的列表,请使用
val emp_newBC = sc.broadcast(emp_new.collect())