【问题标题】:Unable to copy timestamp values filled with "N/A" to RedShift无法将填有“N/A”的时间戳值复制到 RedShift
【发布时间】: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


【解决方案1】:

你应该尝试用空字符串填充。这将导致复制到 Redshift 上的字段为空。

【讨论】:

    【解决方案2】:

    将您的空值替换为空字符串:'',它会在您的行中看起来像两个连续的逗号:value1,value2,,value3,并且会在时间戳列中生成null

    【讨论】:

      猜你喜欢
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 2020-05-30
      • 2016-11-11
      相关资源
      最近更新 更多