【发布时间】:2019-03-07 17:03:38
【问题描述】:
我有一个 DataFrame,其中我用“N/A”替换了一些缺失的字段值,例如 .na.fill("N/A", naColumns)。但是,当数据从 S3 复制到 RedShift 时,出现错误:Invalid timestamp format or value [YYYY-MM-DD HH24:MI:SS]
我知道用字符串值填充时间戳字段可能不是最好的主意。但是,如果我不替换 DataFrame 中的空值,则会收到有关复制到 RedShift 时未找到分隔符的错误。这很可能表明缺少列。
顺便说一下,这些字段不是主键的一部分,而是nullable。
在 DataFrame 一侧填充 timestamp 字段的空值最合适的方法是什么?
【问题讨论】:
-
请发布您的代码以供 Spark 写入。此外,您应该尝试用空字符串填充。我认为这将导致复制到 Redshift 上的字段为空。
-
你可以使用
Option[Timestamp]类型来表示时间戳吗?然后你就可以通过None而不是"N/A"。 -
您检查过您的
stl_load_errors表了吗?它将为您提供与错误相关的更多信息 -
如果您的目标列数据类型是 timestamp,那么您唯一的选择是提供有效的时间戳值或 NULL。如果要存储“N/A”或“None”之类的值,则目标列的数据类型必须为 varchar。
-
@mdem7 是的,我检查了
stl_load_errors表。这就是我发现错误Invalid timestamp format or value [YYYY-MM-DD HH24:MI:SS]的地方
标签: scala apache-spark amazon-s3 apache-spark-sql amazon-redshift