Сообщение об ошибке вызвано различными приоритетами операторов.|
(ИЛИ) имеет более высокий приоритет, чем оператор сравнения ==
.Spark пытается применить OR к
"4940"
и file_df.fw
, а не так, как вы хотите, к (file_df.fw == "4940")
и (file_df.fw == "4960")
.Вы можете изменить приоритеты, используя скобки.Посмотрите на следующий пример:
columns = ['dst_name','fw']
file_df=spark.createDataFrame([('ntp.obspm.fr','3000'),
('ntp.obspm.fr','4940'),
('ntp.obspm.fr','4960'),
('ntp.obspm.de', '4940' )],
columns)
#here I have added the brackets
filtered_df = file_df.filter(file_df.dst_name == "ntp.obspm.fr").filter((file_df.fw == "4940") | (file_df.fw == "4960"))
filtered_df.show()
Вывод:
+------------+----+
| dst_name| fw|
+------------+----+
|ntp.obspm.fr|4940|
|ntp.obspm.fr|4960|
+------------+----+