如何将字符串值传递给Dataframe过滤器(sparkshell)

w46czmvw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(360)

我在spark shell环境中使用spark 2.2.0和scala 2.11.8。我有一个Dataframedf,需要根据'date'列的值过滤掉前一天的数据,然后将数据附加到hdfs位置(e、 g.今天是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\u test:string=2018-06-27;下面的代码应该仍然有效

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

怎么做?

zed5wv10

zed5wv101#

您可以应用如下筛选条件

//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")

相关问题