InternalError_:频谱扫描错误。 S3 到 Redshift 复制命令

InternalError_: Spectrum Scan Error. S3 to Redshift copy command

我正在尝试使用 COPY 命令将一些数据从 S3 存储桶复制到 redshift table。文件格式为 PARQUET。当我 运行 执行 COPY 命令查询时,我得到 InternalError_: Spectrum Scan Error。

这是我第一次尝试从 parquet 文件复制。

如果有解决办法请帮帮我。我在 python 中使用 boto3。

此错误通常表示您的文件和 redshift tables 中的数据存在兼容性问题。您可以在 table 'SVL_S3LOG' 中获得有关错误的更多见解。就我而言,这是因为文件中包含一些无效的 utf8 字符。

这通常由于以下原因而发生:

  1. 如果 table 和文件之间的列数不匹配。
  2. 如果您的文件架构的列类型与您的目标 table 列类型不兼容。

尝试进入错误日志。您可能会发现部分登录云手表。从您上传的屏幕截图中,您还可以找到您的查询编号 运行。

进入 aws redshift 查询编辑器和 运行 下面的查询以获取完整日志:

select message 
from svl_s3log 
where query = '<<your query number>>'
order by query,segment,slice; 

希望对您有所帮助!

频谱扫描错误通常由两件事引起。

a) 源和目标之间的列不匹配 例如如果您要将数据从 S3 复制到 redshift,则 parquet 的列与 redshift 表中的列顺序不一致。

b) 源和目标的数据类型匹配 例如S3 到 redshift 副本,在 parquet 中,col1 数据类型为 Integer,在 redshift 中,相同的 col1 数据类型为 float。

使用数据类型验证模式 匹配源和目标的序列和数据类型将解决频谱扫描错误。