在pyspark中加入参数化

时间:2019-04-07 08:26:53

标签: pyspark

我需要参数化连接条件,并且连接列应该从CLI获得通行证(我正在使用:pyspark中的提示符。

我的代码是:

x1 = col(argv[1])
x2 = col(argv[2])

df = df1.join(df2, (df1.x1 == df2.x2))

这是我的脚本:

join.py empid emdid

我收到此错误

  

df没有这样的列。

关于如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

按照这种方法,即使您的数据框连接到具有相同名称的列上,它也将起作用。

argv = ['join.py', 'empid', 'empid']

x1 = argv[1]
x2 = argv[2]

df1 = spark.createDataFrame([(1, "A"),(2, "B")], ("empid", "c2"))
df2 = spark.createDataFrame([(1, "A"),(2, "B")], ("empid", "c2"))

df = df1.join(df2, df1[x1] == df2[x2])

df.show()