【发布时间】:2019-01-21 16:45:35
【问题描述】:
我正在阅读 spark CSV。我正在为我阅读的文件提供一个模式,并且我在许可模式下阅读它。我想将所有记录保留在 columnNameOfCorruptRecord 中(在我的情况下是损坏的记录)。
我经历了地狱般的设置,但仍然收到警告说我无法抑制我想念的东西。
因此,首先为了获得损坏的记录列,我需要将其作为 StringType 添加到架构中。这记录得很好。 但是,每当我读取文件时,都会收到一个警告,即架构不匹配,因为列的数量不同。这只是一个警告,但它正在填满我的日志。
此外,当有一个不可为空的字段并且有一条损坏的记录时,损坏的记录将进入损坏的记录列,并且它的所有字段都设置为空,因此我得到一个异常,因为我有一个不可为空的字段。解决此问题的唯一方法是将列不可为空设置为可空。这很奇怪。
我错过了什么吗?
回顾:
- 有没有办法在我添加时忽略警告 架构中的损坏记录列
- 有没有办法使用 具有模式的 PERMISSIVE 模式和损坏的记录列 不可为空的字段。
谢谢!
【问题讨论】:
标签: apache-spark apache-spark-sql