Pyspark:内部连接两个Pyspark数据帧,并从第一个数据帧中选择所有列,从第二个数据帧中选择少数列

Pyspark:内部连接两个Pyspark数据帧,并从第一个数据帧中选择所有列,从第二个数据帧中选择少数列,pyspark,Pyspark,我有两个pyspark数据帧A和B。我想内部连接两个pyspark数据帧,并从第一个数据帧中选择所有列,从第二个数据帧中选择少数列 A_df id column1 column2 column3 column4 1 A1 A2 A3 A4 2 A1 A2 A3 A4 3 A1 A2 A3 A4 4 A1 A2 A3 A4 我正在尝试下面的代码- joined_df = (A_df.alias('A_df').join(B

我有两个pyspark数据帧A和B。我想内部连接两个pyspark数据帧,并从第一个数据帧中选择所有列,从第二个数据帧中选择少数列

A_df                
id  column1 column2 column3 column4
1   A1  A2  A3  A4
2   A1  A2  A3  A4
3   A1  A2  A3  A4
4   A1  A2  A3  A4
我正在尝试下面的代码-

joined_df = (A_df.alias('A_df').join(B_df.alias('B_df'),
                               on = A_df['id'] == B_df['id'],
                               how = 'inner')
                               .select('A_df.*',B_df.column5,B_df.column6))

但它给出了一个奇怪的结果,即在列中交换值。我怎样才能做到呢?提前谢谢

有什么问题吗?一切正常

df1 = spark.read.option("header","true").option("inferSchema","true").csv("test1.csv")
df2 = spark.read.option("header","true").option("inferSchema","true").csv("test2.csv")

df1.alias('a').join(df2.alias('b'), ['id'], 'inner') \
   .select('a.*', 'b.column5', 'b.column6').show()

+---+-------+-------+-------+-------+-------+-------+
| id|column1|column2|column3|column4|column5|column6|
+---+-------+-------+-------+-------+-------+-------+
|  1|     A1|     A2|     A3|     A4|     B5|     B6|
|  2|     A1|     A2|     A3|     A4|     B5|     B6|
|  3|     A1|     A2|     A3|     A4|     B5|     B6|
|  4|     A1|     A2|     A3|     A4|     B5|     B6|
+---+-------+-------+-------+-------+-------+-------+

有什么问题?一切正常

df1 = spark.read.option("header","true").option("inferSchema","true").csv("test1.csv")
df2 = spark.read.option("header","true").option("inferSchema","true").csv("test2.csv")

df1.alias('a').join(df2.alias('b'), ['id'], 'inner') \
   .select('a.*', 'b.column5', 'b.column6').show()

+---+-------+-------+-------+-------+-------+-------+
| id|column1|column2|column3|column4|column5|column6|
+---+-------+-------+-------+-------+-------+-------+
|  1|     A1|     A2|     A3|     A4|     B5|     B6|
|  2|     A1|     A2|     A3|     A4|     B5|     B6|
|  3|     A1|     A2|     A3|     A4|     B5|     B6|
|  4|     A1|     A2|     A3|     A4|     B5|     B6|
+---+-------+-------+-------+-------+-------+-------+

.select('A_-df.*,'B_-df.column5','B_-df.column6'))
它给出了相同的问题。列之间的值混合如果两个表中的列名相同,则会变得不明确。重命名其中一个表中的列并执行此操作。它会起作用。
选择('A_-df.*,'B_-df.column5','B_-df.column6'))
它给出了相同的问题。列之间的值混合如果两个表中的列名相同,则会变得不明确。重命名其中一个表中的列并执行此操作。它会起作用的。
df1 = spark.read.option("header","true").option("inferSchema","true").csv("test1.csv")
df2 = spark.read.option("header","true").option("inferSchema","true").csv("test2.csv")

df1.alias('a').join(df2.alias('b'), ['id'], 'inner') \
   .select('a.*', 'b.column5', 'b.column6').show()

+---+-------+-------+-------+-------+-------+-------+
| id|column1|column2|column3|column4|column5|column6|
+---+-------+-------+-------+-------+-------+-------+
|  1|     A1|     A2|     A3|     A4|     B5|     B6|
|  2|     A1|     A2|     A3|     A4|     B5|     B6|
|  3|     A1|     A2|     A3|     A4|     B5|     B6|
|  4|     A1|     A2|     A3|     A4|     B5|     B6|
+---+-------+-------+-------+-------+-------+-------+