【发布时间】:2017-03-07 21:38:06
【问题描述】:
我正在尝试编写一个 UDF 来将时间戳转换为表示一周中的小时的整数。我可以像这样使用 SparkSql 轻松完成此操作。
我的代码中有许多 UDF 使用这种精确的语法,但这个正在尝试类型不匹配错误。我还尝试使用col("session_ts_start") 调用我的UDF,但这也失败了。
import spark.implicits._
import java.sql.Timestamp
import org.apache.spark.sql.functions._
def getHourOfWeek() = udf(
(ts: Timestamp) => unix_timestamp(ts)
)
val dDF = df.withColumn("hour", getHourOfWeek()(df("session_ts_start")))
dDF.show()
<console>:154: error: type mismatch;
found : java.sql.Timestamp
required: org.apache.spark.sql.Column
(ts: Timestamp) => unix_timestamp(ts)
【问题讨论】:
标签: scala apache-spark apache-spark-sql user-defined-functions