【发布时间】:2018-09-19 19:14:51
【问题描述】:
我有一个已读入的 jsonl 文件,创建了一个临时表视图并过滤掉了我想要修改的记录。
val df = session.read.json("tiny.jsonl")
df.createOrReplaceTempView("tempTable")
val filter = df.select("*").where("field IS NOT NULL")
现在我正在尝试各种事情。我想在写回之前用 currentTimestamp 更改一个名为“时间”的列。有时我想将 currentTimestamp 更改为 timestampNow - 例如 5 天。
val change = test.withColumn("server_time", date_add(current_timestamp(), -1))
上面的示例将返回一个从今天开始 1 的日期,而不是时间戳。
编辑: 模拟我的 jsonl 输入的示例数据框:
val df = Seq(
(1, "fn", "2018-02-18T22:18:28.645Z"),
(2, "fu", "2018-02-18T22:18:28.645Z"),
(3, null, "2018-02-18T22:18:28.645Z")
).toDF("id", "field", "time")
预期输出:
+---+------+-------------------------+
| id|field |time |
+---+------+-------------------------+
| 1| fn | 2018-04-09T22:18:28.645Z|
| 2| fn | 2018-04-09T22:18:28.645Z|
+---+------+-------------------------+
【问题讨论】:
-
请添加示例输入和预期输出。另请阅读:stackoverflow.com/questions/48427185/…
-
@philantrovert 我已经更新了示例输入和预期
标签: scala apache-spark dataframe