我正在努力学习Spark。我有一个org.apache.spark.sql.Column
我正在阅读DataFrame
。然后我尝试使用列上的条件过滤它:
val resultDataFrame = dataFrame.filter(col("DATECOL") >= date)
DATECOL
被DataTypes.DateType
读入DataFrame。 date
是我必须硬编码的变量。
我想弄清楚的是如何定义date
即如何创建DataTypes.DateType
的实例或从String
左右转换为实例,以便我可以运行上面的表达式。我尝试使用String
并且它没有给出错误,但它返回时没有结果。
答案 0 :(得分: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|
+----------+-----+