S3文件大小为十进制时的频谱表清单文件

我正在通过创建Spectrum外部表并将其指向清单文件来读取S3文件,该清单文件包含有关源S3文件的信息。 问题是当我的S3文件大小为小数时,例如37.5 MB或100.2 KB。

根据文档,我们需要提供文件大小(以字节为单位)。现在,当我使用1000的乘数转换为字节时,我在外部表中丢失了文件末尾的某些记录或某些数据。 但是,当我使用1024的倍数转换为字节时,转换后的文件大小将为十进制。

考虑到我的文件大小为100.2 KB,所以以字节为单位,它将为102604.8字节。

  1. 当我在清单文件中提供文件大小为102604.8时,我得到一个 错误“文件条目未设置内容长度”
  2. 当我将舍入值提供给下一个整数102605时,出现错误“ Spectrum Error”(频谱错误)
  3. 当我向前一个整数102604提供一个四舍五入的值时,我再次遇到相同的错误“ Spectrum Error”(频谱错误)

我的清单如下:

{

  "entries": [

    {"url":"s3://path/filename1.csv","meta": { "content_length": 102605 } },{"url":"s3://path/filename2.csv","meta": { "content_length": 102605 } }

  ]

}

这里的任何人都遇到这种情况并可以分享他们的意见。

houjunli2010 回答:S3文件大小为十进制时的频谱表清单文件

文件的实际大小是多少?

考虑到我的文件大小为100.2 KB,所以以字节为单位,它将是102604.8字节。

x的值不是确切的文件大小(以字节为单位)。您的文件将始终具有完整大小的字节数(因为数据存储在内存中的字节中)。

您可以通过将文件复制到本地计算机并调用

来检查文件的大小
x

此外,您还可以使用例如来直接检查s3对象的元数据。 aws cli

100.2 KB

在我们的系统中,我们使用后者(但使用boto3 python库)来组装清单文件,并且该文件可以正常工作。

对于调试,您还可以查看一些内部Redshift表,例如STL_ERRORSVL_S3LOG

本文链接:https://www.f2er.com/2428543.html

大家都在问