Spectrum table S3 文件大小为十进制时的清单文件
Spectrum table Manifest file when S3 file size is in decimal
我正在通过创建外部 Spectrum table 并将其指向包含源 S3 文件信息的清单文件来读取 S3 文件。
问题是当我的 S3 文件大小为十进制时,例如37.5 MB 或 100.2 KB。
根据文档,我们需要以字节为单位提供文件大小。现在,当我使用 1000 的乘数转换为字节时,我丢失了外部 table 中文件末尾的一些记录或一些数据。
但是当我使用 1024 的乘数转换为字节时,我转换后的文件大小将以十进制表示。
考虑到我的文件大小为 100.2 KB,因此以字节为单位为 102604.8 字节。
- 当我在清单文件中提供文件大小为 102604.8 时,我得到一个
错误 "File entry does not have content length set"
- 当我为下一个整数 102605 提供舍入值时,出现错误 "Spectrum Error"
- 当我为前一个整数 102604 提供舍入值时,我再次遇到相同的错误 "Spectrum Error"
我的清单看起来像:
{
"entries": [
{"url":"s3://path/filename1.csv", "meta": { "content_length": 102605 } },
{"url":"s3://path/filename2.csv", "meta": { "content_length": 102605 } }
]
}
这里有没有人遇到过这种情况,可以分享他们的意见。
文件的实际大小是多少?
Consider I have a file size 100.2 KB, so in bytes it would be 102604.8 Bytes.
100.2 KB
的值不是准确的文件大小(以字节为单位)。您的文件将始终具有完整的字节数(因为数据以字节为单位存储在内存中)。
您可以通过将文件复制到本地计算机并调用
来检查文件的大小
stat -f%z my_file.csv
你也可以直接检查s3对象的元数据,例如。 AWS 客户端
aws s3api head-object --bucket my_bucket --key my_objects_key --query 'ContentLength'
在我们的系统中,我们使用后者(但使用 boto3 python 库)到 assemble 清单文件,它可以正常工作。
我正在通过创建外部 Spectrum table 并将其指向包含源 S3 文件信息的清单文件来读取 S3 文件。 问题是当我的 S3 文件大小为十进制时,例如37.5 MB 或 100.2 KB。
根据文档,我们需要以字节为单位提供文件大小。现在,当我使用 1000 的乘数转换为字节时,我丢失了外部 table 中文件末尾的一些记录或一些数据。 但是当我使用 1024 的乘数转换为字节时,我转换后的文件大小将以十进制表示。
考虑到我的文件大小为 100.2 KB,因此以字节为单位为 102604.8 字节。
- 当我在清单文件中提供文件大小为 102604.8 时,我得到一个 错误 "File entry does not have content length set"
- 当我为下一个整数 102605 提供舍入值时,出现错误 "Spectrum Error"
- 当我为前一个整数 102604 提供舍入值时,我再次遇到相同的错误 "Spectrum Error"
我的清单看起来像:
{
"entries": [
{"url":"s3://path/filename1.csv", "meta": { "content_length": 102605 } },
{"url":"s3://path/filename2.csv", "meta": { "content_length": 102605 } }
]
}
这里有没有人遇到过这种情况,可以分享他们的意见。
文件的实际大小是多少?
Consider I have a file size 100.2 KB, so in bytes it would be 102604.8 Bytes.
100.2 KB
的值不是准确的文件大小(以字节为单位)。您的文件将始终具有完整的字节数(因为数据以字节为单位存储在内存中)。
您可以通过将文件复制到本地计算机并调用
来检查文件的大小stat -f%z my_file.csv
你也可以直接检查s3对象的元数据,例如。 AWS 客户端
aws s3api head-object --bucket my_bucket --key my_objects_key --query 'ContentLength'
在我们的系统中,我们使用后者(但使用 boto3 python 库)到 assemble 清单文件,它可以正常工作。