如何将参数传递给不带字符串的函数(Pyspark)

时间:2015-08-05 22:07:26

标签: python join argument-passing apache-spark-sql pyspark

我在Spark SQL中有join函数。此函数需要连接条件,如果我们加入的列不具有相同的名称,则需要将它们作为连接表达式传递。

示例:

x.join(y, x.column1 == y.column2)

这意味着我们正在加入x中的ycolumn1以及xcolumn2

}的数据框yjoin

我想编写一个函数,它将两个数据帧的列名作为参数并加入这些列。问题是join表达式不能是字符串。我查看了像one这样的问题,其中地图用于映射变量名称,但这不符合我的需要。我需要删除使列名成为字符串的引号,并将它们传递给public UniversalFormDto() { FaxNumber = "N/A"; MiddleName = "N/A"; //etc... } 函数。

我已经检查过,如果我们加入的列不具有相同的名称,那么在Pyspark中没有其他方法可以做到这一点(除了生成一个具有新列名称的数据帧的副本。这是因为数据帧是不可变的,列名不能改变)

还有其他方法可以将列名传递给连接表达式吗?

1 个答案:

答案 0 :(得分:0)

重新发布我的评论作为未来参考的答案。您可以使用gettatr函数获取类或模块的任何属性。

x.join(y, getattr(x, 'column1') == getattr(y, 'column2'))