簡體   English   中英

Scala-如何將字符串值傳遞到數據幀過濾器(Spark-Shell)

[英]Scala - How to pass a string value to a data frame filter (Spark-Shell)

我在Spark-Shell環境中使用Spark 2.2.0和Scala 2.11.8。 我有一個數據幀df,我需要根據“日期”列的值過濾掉前一天的數據,然后將數據附加到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:字符串= 2018-06-27; 下面的代碼應該仍然有效

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

這個怎么做?

您可以像下面這樣應用過濾條件

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM