广播变量无法获取所有数据

broadcast variable fails to take all data

使用collectasmap() 应用广播变量时​​,并非所有值都包含在广播变量中。例如

    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 中的所有数据都出现了。我错过了什么?

提前致谢。

问题是emp_new是元组的集合,而emp_newBC是广播映射。如果您正在收集地图,则会删除重复的键,因此您的数据较少。如果您想取回所有元组的列表,请使用

val emp_newBC = sc.broadcast(emp_new.collect())