【问题标题】:Spark Date column initializers for "withColumn"?“withColumn”的 Spark Date 列初始值设定项?
【发布时间】:2018-05-10 19:06:22
【问题描述】:

这里是 Scala 2.11。我有以下数据库表:

[input]
===
id BIGINT UNSIGNED NOT NULL,
name VARCHAR(50) NOT NULL,
rank INT NOT NULL

我使用以下 Spark 代码阅读的内容:

val inputDf = sqlContext().read
    .format("blah whatever")
    .option("url", "jdbc://blah://whatever")
    .option("query", "SELECT * FROM input WHERE id < 500")
    .load()

但是我希望我的inputDf 包含一个数据库中不存在的新列lastRanOn,这将是一个Java Date,其值为当前时间(所以new Date()) .我能想到的最接近的是:

inputDf.withColumn("lastRanOn", new Date())

但是这给了我编译器错误:

“类型不匹配,预期:列,实际:日期”

有什么想法可以做到这一点吗?

【问题讨论】:

  • 您可以使用lit() 函数将值转换为列。但是,它并不支持所有类型。您将不得不使用 java.sql 类型。

标签: apache-spark


【解决方案1】:

第二个参数必须是Column。你可以使用current_date

import org.apache.spark.sql.functions.current_date

inputDf.withColumn("lastRanOn", current_date)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 2012-12-24
    • 1970-01-01
    • 2020-09-21
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多