我正在将多个字符串列转换为日期时间列,但是遇到以下问题:
示例列1:
pipline_rw
代码:
1/11/2018 9:00:00 AM
这行得通
示例列2:
df = df.withColumn(df.column_name, to_timestamp(df.column_name, "MM/dd/yyyy hh:mm:ss aa"))
代码:
2019-01-10T00:00:00-05:00
这行得通
第3列示例
df = df.withColumn(df.column_name, to_date(df.column_name, "yyyy-MM-dd'T'HH:mm:ss'-05:00'"))
代码:
20190112
这不起作用。我收到此错误:
df = df.withColumn(df.column_name, to_date(df.column_name, "yyyyMMdd"))
我觉得这应该很简单,但是我缺少了一些东西。
答案 0 :(得分:1)
该错误很容易解释,您需要将列设为String。 您确定列已是字符串吗?好像没有您可以先使用column.cast
将其转换为String。import org.apache.spark.sql.types._
df = df.withColumn(df.column_name, to_date(df.column_name.cast(StringType), "yyyyMMdd")