定义DataTypes.DateType

时间:2017-02-03 02:38:49

标签: scala date apache-spark

我正在努力学习Spark。我有一个org.apache.spark.sql.Column我正在阅读DataFrame。然后我尝试使用列上的条件过滤它:

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

DATECOLDataTypes.DateType读入DataFrame。 date是我必须硬编码的变量。

我想弄清楚的是如何定义date即如何创建DataTypes.DateType的实例或从String左右转换为实例,以便我可以运行上面的表达式。我尝试使用String并且它没有给出错误,但它返回时没有结果。

1 个答案:

答案 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|
+----------+-----+