Spark:DataFrame在多次连接后更改值

时间:2017-10-17 14:28:13

标签: scala apache-spark join dataframe

这是我的代码的一点摘录,你可以看到如何在第二次加入后更改数据帧值:

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|
|------------|-----------|-----------|-----------|------|-------------|

......不可改变的价值...... ?? ...... :(请帮忙。

0 个答案:

没有答案