Как мне получить все строки из необработанного CSV-файла путем фильтрации с несколькими условиями. У меня есть необработанный файл, и я изменяю его на DF.
val text = sc.textFile("hdfs:///data/text/")
case class TextFile(id:String, time:String,text:String)
val textDf = text.map(_.split(",")).map(s => TextFile(s(0).toString(),
s(1).toString(),
s(2).toString()
)).toDF()
И у меня также есть файл условий.
val findWord = sc.textFile("hdfs:///condition/text.txt").collect.toList
Если мне было известно, каковы условия, мне просто нужно написать вниз, как это
textDf.filter(lower($"text").contains("ok") || lower($"text").contains("yes"))
Были различные условия, поэтому я пытаюсь, как это
val test = findWord.map(v => s"""lower($$"text").contains("$v")""").mkString(" || ");
textDf.filter(test).collect
, но я не могу запустить его. Кроме того, печать (тест) - это то же самое, что и условие, которое мне нужно, не могу использовать в фильтре df.
org.apache.spark.sql.catalyst.parser.ParseException:
Как мне решить мою проблему?
Спасибо за вашу помощь и совет.