Não tenho nenhum propósito específico de entender o significado dos nomes estranhos, apenas estou interessado nisso.
Aqui está um código simples para o mesmo.
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df1 = spark.createDataFrame([['a', 'b'], ['c', 'd']], 'c1: string, c2: string')
df2 = spark.createDataFrame([['a', 'p'], ['c', 'q']], 'c1: string, c3: string')
df1.join(df2, df1.c1 == df2.c1).explain()
Ele produz
== Physical Plan ==
AdaptiveSparkPlan isFinalPlan=false
+- SortMergeJoin [c1#0], [c1#4], Inner
:- Sort [c1#0 ASC NULLS FIRST], false, 0
: +- Exchange hashpartitioning(c1#0, 200), ENSURE_REQUIREMENTS, [plan_id=191]
: +- Filter isnotnull(c1#0)
: +- Scan ExistingRDD[c1#0,c2#1]
+- Sort [c1#4 ASC NULLS FIRST], false, 0
+- Exchange hashpartitioning(c1#4, 200), ENSURE_REQUIREMENTS, [plan_id=192]
+- Filter isnotnull(c1#4)
+- Scan ExistingRDD[c1#4,c3#5]
Os nomes das colunas são seguidos por números como c1#0
e c2#1
. Quais são esses números? Uma coisa que posso entender é que eles ajudam a diferenciar as colunas com o mesmo nome em diferentes dataframes como c1#0
e c1#4
.
Qualquer ajuda é apreciada.
Isso será usado na
import org.apache.spark.sql.catalyst.expressions.AttributeReference
aula para cada coluna emDataFrame