背景:总的来说,我是Spark和分布式计算的新手,所以这是一个学习练习,而不是现实生活中的练习.挑战是在没有UDF的情况下确实解决问题.
假设我有以下数据帧:
+------+------+----+--------+---------+----------+
|f_name|s_name|year|district|check_col|true_value|
+------+------+----+--------+---------+----------+
| John| Smith|1981| SW8| s_name| Smith|
| Jane| Jones|1980| L15| s_name| Smith|
| John| Smith|1981| SW8| year| 1980|
| Jane| Jones|1980| L15| year| 1980|
+------+------+----+--------+---------+----------+
我想判断名为check_col
的列的值是否等于true_value
.具体地说,我将添加一个新的布尔列,当(且仅当!)在check_ol中命名的列具有在TRUE_VALUE中指定的值时,该行上的值为True.
在本例中,第一行的值为True,因为check_ol="s_name",该行上s_name列的值为"Smith",等于"true_value"中的值.
我曾希望以下方法能奏效,但没有奏效:
df = df.withColumn(
"Check",
df[df["check_col"]] == df["true_value"]
)
我想try 把桌子连在一起会是个好主意,但我找不到解决办法.