这是我的代码的一点摘录,你可以看到如何在第二次加入后更改数据帧值:
val grupoIds = ids.filter("grupo = 'niu'").filter("aux IN (47001084057,47900216723,47004245401)")
val tmpIds: Broadcast[DataFrame] = spark.sparkContext.broadcast(grupoIds.as("idsBC"))
Formateador.pintar("CrearGraph", "Hemos creado la variable BC", null)
relacionesfamilyDF.persist(StorageLevel.MEMORY_AND_DISK).take(1)
tmpIds.value.show(20)
|-----------|-----------|------|-------------|
| nodoID| aux|grupo | uniqueID|
|-----------|-----------|------|-------------|
|47001084057|47001084057| myId| 798863917142|
|-----------|-----------|------|-------------|
|47004245401|47004245401| myId| 987842478471|
|-----------|-----------|------|-------------|
|47900216723|47900216723| myId|1417339207898|
|-----------|-----------|------|-------------|
val familyAuxJoin = relacionesfamilyDF.as("fam1").join(tmpIds.value.as("ids1"), $"fam1.src" === $"ids1.aux", "left_outer").filter("src = 47001084057")
familyAuxJoin.persist(StorageLevel.MEMORY_AND_DISK).take(1)
Formateador.pintar("CrearGraph", "hacemos el primer join:", null)
familyAuxJoin.show(20)
|-----------|-----------|-----------|-----------|------|------------|
| src| dst| nodoID| aux|grupo | uniqueID|
|-----------|-----------|-----------|-----------|------|------------|
|47001084057|47004245401|47001084057|47001084057| myId|798863917142|
|-----------|-----------|-----------|-----------|------|------------|
|47001084057|47900216723|47001084057|47001084057| myId|798863917142|
|-----------|-----------|-----------|-----------|------|------------|
连接正常,你可以看到src = aux
val familyAux = familyAuxJoin
.select("uniqueID", "dst") //,"relationship","date_from","date_to")
.withColumnRenamed("uniqueID", "src")
Formateador.pintar("CrearGraph", "Seleccionamos:", null)
familyAux.printSchema()
familyAux.show(20)
relacionesfamilyDF.unpersist(true)
|------------|-----------|
| src| dst|
|------------|-----------|
|798863917142|47004245401|
|------------|-----------|
|798863917142|47900216723|
|------------|-----------|
“新src”没问题。而现在,当我做下一次加入......
val familyGraphJoin = familyAux.as("fam2").join(tmpIds.value.as("ids2"), $"fam2.dst" === $"ids2.aux", "left_outer")
familyGraphJoin.persist(StorageLevel.MEMORY_AND_DISK).take(1)
familyAuxJoin.unpersist(true)
Formateador.pintar("Segundo join", "Seleccionamos:", null)
familyGraphJoin.show(20)
|------------|-----------|-----------|-----------|------|-------------|
| src| dst| nodoID| aux|grupo | uniqueID|
|------------|-----------|-----------|-----------|------|-------------|
|798863917233|47900216723|47900216723|47900216723| myId|1417339207873|
|------------|-----------|-----------|-----------|------|-------------|
|798863917233|47004245401|47004245401|47004245401| myId| 987842478109|
|------------|-----------|-----------|-----------|------|-------------|
哇!!!,“src”已经改变!!!,并且...加入工作正常,但“uniqueID”也错了!!
有什么想法吗?
谢谢! 此致
PD:如果我把它(另一个执行相同的代码)
familiaresGrafoJoin.show(20)
familiaresGrafoJoin.show(20)
familiaresGrafoJoin.show(20)
|------------|-----------|-----------|-----------|------|-------------|
| src| dst| nodoID| aux|grupo | uniqueID|
|------------|-----------|-----------|-----------|------|-------------|
|798863917396|47900216723|47900216723|47900216723| myId|1417339207835|
|------------|-----------|-----------|-----------|------|-------------|
|798863917396|47004245401|47004245401|47004245401| myId| 987842478132|
|------------|-----------|-----------|-----------|------|-------------|
|------------|-----------|-----------|-----------|------|-------------|
| src| dst| nodoID| aux|grupo | uniqueID|
|------------|-----------|-----------|-----------|------|-------------|
|798863917155|47900216723|47900216723|47900216723| myId|1417339207931|
|------------|-----------|-----------|-----------|------|-------------|
|798863917155|47004245401|47004245401|47004245401| myId| 987842478448|
|------------|-----------|-----------|-----------|------|-------------|
|------------|-----------|-----------|-----------|------|-------------|
| src| dst| nodoID| aux|grupo | uniqueID|
|------------|-----------|-----------|-----------|------|-------------|
|798863917303|47900216723|47900216723|47900216723| myId|1417339208027|
|------------|-----------|-----------|-----------|------|-------------|
|798863917303|47004245401|47004245401|47004245401| myId| 987842478230|
|------------|-----------|-----------|-----------|------|-------------|
......不可改变的价值...... ?? ...... :(请帮忙。