2017-02-03 3 views
2

私はSparkを習得しようとしています。私はDataFrameとして私が読んでいるorg.apache.spark.sql.Columnを持っています。そして、私は列に条件を使用して、それをフィルタ処理しようとしています:DataTypes.DateTypeを定義する

val resultDataFrame = dataFrame.filter(col("DATECOL") >= date) 

DATECOLは、データフレームの中DataTypes.DateTypeとして読まれています。 dateはハードコードする必要がある変数です。私が把握しようとしています何

は私がdateを定義することができ、すなわちどのように私はDataTypes.DateTypeのインスタンスを作成したり、私は上記の式を実行できるように、Stringかそこらから、それに変換する方法です。私はStringを使用しようとしましたが、エラーは発生しませんが、結果は返されません。

答えて

3

あなたはそれjava.sql.Date作ることができます。

val df = Seq(("2016-10-10", 2), ("2017-02-02", 10)).toDF("DATECOL", "value") 

val df1 = df.withColumn("DATECOL", to_date($"DATECOL")) 
// df1: org.apache.spark.sql.DataFrame = [DATECOL: date, value: int] 

df1.show 
+----------+-----+ 
| DATECOL|value| 
+----------+-----+ 
|2016-10-10| 2| 
|2017-02-02| 10| 
+----------+-----+ 

val date = java.sql.Date.valueOf("2016-11-01") 
// date: java.sql.Date = 2016-11-01 

df1.filter($"DATECOL" > date).show 
+----------+-----+ 
| DATECOL|value| 
+----------+-----+ 
|2017-02-02| 10| 
+----------+-----+ 
+0

ああ、Javaの日付を使用しての感謝を考えていませんでした! – rgamber

+1

が成立すると、 'String'も同様に動作します!以前の結果を見て間違っていたと思います。 – rgamber

+0

Hmm。標準的なフォーマットの文字列が動作しますが、これはちょうどあなたがいくつかの[特殊なケース]を持っている場合のためです(http://stackoverflow.com/questions/41703517/create-a-new-column-based-on-date-checking) 。 – Psidom

関連する問題