Когда вы указываете столбец соединения как тип строки или массива, он приведет только к одному столбцу [1].Пример Pyspark:
l = [('9090909092',1,30),('9090909093',2,30),('9090909090',3,30),('9090909094',4,30)]
r = [(1,40),(2,50),(3,60),(4,70)]
left = spark.createDataFrame(l, ['NUMBER','ID','AMOUNT'])
right = spark.createDataFrame(r,['ID','AMOUNT'])
df = left.join(right, "ID")
df.show()
+---+----------+------+------+
| ID| NUMBER |AMOUNT|AMOUNT|
+---+----------+------+------+
| 1 |9090909092| 30 | 40 |
| 3 |9090909090| 30 | 60 |
| 2 |9090909093| 30 | 50 |
| 4 |9090909094| 30 | 70 |
+---+----------+------+------+
Но это все равно приведет к дублированию имен столбцов в кадре данных для всех столбцов, которые не являются столбцом объединения (столбец AMOUNT в этом примере).Для столбцов такого типа вы должны назначить новое имя до или после объединения с функцией фрейма данных toDF [2]:
newNames = ['ID','NUMBER', 'LAMOUNT', 'RAMOUNT']
df= df.toDF(*newNames)
df.show()
+---+----------+-------+-------+
| ID| NUMBER |LAMOUNT|RAMOUNT|
+---+----------+-------+-------+
| 1 |9090909092| 30 | 40 |
| 3 |9090909090| 30 | 60 |
| 2 |9090909093| 30 | 50 |
| 4 |9090909094| 30 | 70 |
+---+----------+-------+-------+
[1] https://docs.databricks.com/spark/latest/faq/join-two-dataframes-duplicated-column.html
[2] http://spark.apache.org/docs/2.2.1/api/python/pyspark.sql.html#pyspark.sql.DataFrame.toDF