Scala - Как передать строковое значение в фильтр фрейма данных (Spark-Shell) - PullRequest
0 голосов
/ 28 июня 2018

Я использую Spark 2.2.0 и Scala 2.11.8 в среде Spark-Shell. У меня есть фрейм данных df, и мне нужно отфильтровать данные за предыдущий день по значению столбца date, а затем добавить данные в папку HDFS. (например, сегодня 2018-06-28, мне нужны данные 2018-06-27)

Ниже приведен код:

 df.filter($"date" === "2018-06-27") .write.mode(SaveMode.Append).parquet("hdfs:/path..../date=2018-06-27")

Мне нужен код выше для автоматизации, поэтому мне нужно заменить «2018-06-27» для значения фильтра и имени каталога. Так что, если у меня есть строка -> date_test: String = 2018-06-27; Код ниже должен все еще работать

 df.filter($"date" === "date_test") .write.mode(SaveMode.Append).parquet("hdfs:/path..../date=date_test")

Как это сделать?

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете применить условия фильтра, как показано ниже

//Input
+----------+
|      date|
+----------+
|2018-02-01|
|2017-01-02|
+----------+

//Solution: 
 val previousDate="'2018-02-01'"
 df.filter(s"date=$previousDate").show

//Output: 
+----------+
|      date|
+----------+
|2018-02-01|
+----------+

Вы можете сделать это для своего решения

 val datetest:String="2018-02-01"
 df.filter(s"date='$datetest'").write.mode(SaveMode.Append).parquet(s"hdfs:/path..../$datetest")
...