我在努力学习火花。我有一个org.apache.spark.sql.Column,我正在阅读它作为一个DataFrame。然后我尝试使用列上的一个条件来过滤它:
val resultDataFrame = dataFrame.filter(col("DATECOL") >= date)DATECOL被解读为DataTypes.DateType到DataFrame中。date是一个必须硬编码的变量。
我想弄清楚的是如何定义date,即如何创建DataTypes.DateType的实例或从String左右转换为实例,以便运行上面的表达式。我尝试使用一个String,它没有给出一个错误,但是它返回时没有结果。
发布于 2017-02-03 03:02:32
你可以把它做成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|
+----------+-----+https://stackoverflow.com/questions/42015842
复制相似问题