我有一个通过连接两个表获得的Spark DataFrame。他们共享“名称
”列valuesA = [('A',1,5),('B',7,12),('C',3,6),('D',4,9)]
TableA = spark.createDataFrame(valuesA,['name','id','otherValue']).alias('ta')
valuesB = [('A',1),('A',4),2),8),('E',4)]
TableB = spark.createDataFrame(valuesB,'id']).alias('tb')
joined = TableA.join(TableB,TableA.name==TableB.name,'left')
我想对groupby执行类似于选择joined.select('ta.*').show()
的操作,但是joined.groupBy('ta.*').count()
会引发错误。
如何在不必显式列出列的情况下实现类似的功能? joined.groupBy(TableA.columns).count()
引起了问题,因为“名称”不是唯一的
作为替代方案,如何从连接中检索具有适当别名的列?
PS做为joined = TableA.join(TableB,['name'],'left')
的联接不是一个有用的解决方案,因为在联接条件中没有使用的列在表A和B中具有相同的名称