Фильтр DataFrame с несколькими столбцами не работает с использованием оператора && в Spark 2.2 (scala) - PullRequest
1 голос
/ 29 октября 2019

Я использую фрейм данных в Spark 2.2 и загружаю туда данные. Я использую оператор && в функции Filter, которая использует несколько столбцов. Ошибка говорит об ошибке: значение && не является членом строки

Вот мой код.

scala> val orders = spark.sparkContext.textFile("D:\\SparkExamples\\retail_db\\orders\\part-00000")                                                            

scala> import java.sql.Timestamp

scala> val ordersMap = orders.map(x => (x.split(",")(0).toInt,Timestamp.valueOf(x.split(",")(1)),x.split(",")(2).toInt,x.split(",")(3)))

scala> val ordersSchema = ordersMap.toDF("order_id","order_date","order_customer_id","order_status")

Ниже фильтр работает правильно -

ordersSchema.select($"*").filter($"order_status"=== "COMPLETE").show

Нокогда я помещаю два столбца в фильтр с &&, как показано ниже -

scala> ordersSchema.select($"*").filter($"order_status"!== "COMPLETE" && $"order_date" === "2013-07-25 00:00:00").show
<console>:34: error: value && is not a member of String
       ordersSchema.select($"*").filter($"order_status"!== "COMPLETE" && $"order_date" === "2013-07-25 00:00:00").show

Ошибка выходит. Есть указатель?

1 Ответ

1 голос
/ 29 октября 2019

&& не является допустимым логическим оператором для свечи Columns, вместо этого используйте and:

ordersSchema.select($"*").filter($"order_status" =!= "COMPLETE" and $"order_date" === "2013-07-25 00:00:00").show
...