【发布时间】:2019-07-21 19:53:16
【问题描述】:
我正在尝试将具有 date 数据类型的 a 列与另一个值进行比较,但出现错误。
d2.printSchema()
root
|-- family: string (nullable = true)
|-- entry_date: array (nullable = true)
| |-- element: date (containsNull = true)
以下行给出错误
df3 = df2.withColumn("_entry_date", when(df2["entry_date"] ==lit("1979-01-01"), None))
**错误**
“由于数据类型不匹配,无法解析 '(
entry_date= '1979-01-01')':'(entry_date= '1979-01-01')' 中的不同类型(数组和字符串) .;;\n'Project [family#1149, entry_date#1164, CASE WHEN (entry_date#1164 = 1979-01-01) THEN null END AS _entry_date#1167]\n+- AnalysisBarrier\n +- 聚合 [family#1149 ], [family#1149, collect_list(CASE WHEN isnull(_date#1154) THEN 1979-01-01 ELSE cast(_date#1154 as string) END, 0, 0) AS entry_date#1164]\n +- 项目 [id #1148, family#1149, date#1150, to_date(from_unixtime(unix_timestamp('date, yyyy-mm-dd, None), yyyy-MM-dd HH:mm:ss, None), None) AS _date#1154] \n +- 逻辑RDD [id#1148, family#1149, date#1150], false\n"
【问题讨论】:
-
什么是 df2 的架构或如何将 df 转换为 df2? df2.entry_date 是 ArrayType 吗?你的 spark 版本是什么?
-
@jxc 我已经更新了问题
-
您的预期结果是什么?过滤掉这个数组字段中的一些日期或将值重置为 NaT 时它是 '1979-01-01'?你能添加一些示例数据和预期的结果吗?
标签: pyspark