我在Spark SQL中有join函数。此函数需要连接条件,如果我们加入的列不具有相同的名称,则需要将它们作为连接表达式传递。
示例:
x.join(y, x.column1 == y.column2)
这意味着我们正在加入x
中的y
和column1
以及x
中column2
y
和join
我想编写一个函数,它将两个数据帧的列名作为参数并加入这些列。问题是join表达式不能是字符串。我查看了像one这样的问题,其中地图用于映射变量名称,但这不符合我的需要。我需要删除使列名成为字符串的引号,并将它们传递给public UniversalFormDto()
{
FaxNumber = "N/A";
MiddleName = "N/A";
//etc...
}
函数。
我已经检查过,如果我们加入的列不具有相同的名称,那么在Pyspark中没有其他方法可以做到这一点(除了生成一个具有新列名称的数据帧的副本。这是因为数据帧是不可变的,列名不能改变)
还有其他方法可以将列名传递给连接表达式吗?
答案 0 :(得分:0)
重新发布我的评论作为未来参考的答案。您可以使用gettatr
函数获取类或模块的任何属性。
x.join(y, getattr(x, 'column1') == getattr(y, 'column2'))