Я читаю файл S3, создавая внешнюю таблицу Spectrum и указывая ее на файл манифеста, который содержит информацию об исходном файле S3. Проблема в том, что размер моего файла S3 указан в десятичном формате, например. 37,5 МБ или 100,2 КБ.
Согласно документации нам нужно указать размер файла в байтах. Теперь, когда я использую множитель 1000 для преобразования в байты, я теряю некоторые записи или некоторые данные в конце файла во внешней таблице. Но когда я использую множитель 1024 для преобразования в байты, размер конвертированного файла будет десятичным.
Предположим, у меня размер файла 100,2 КБ, поэтому в байтах это будет 102604,8 байт.
- Когда я указываю размер файла как 102604,8 в файле манифеста, я получаю сообщение об ошибке «В записи файла не задана длина содержимого».
- Когда я предоставляю округленное значение для следующего целого числа, 102605, я получаю сообщение об ошибке «Ошибка спектра».
- Когда я предоставляю округленное значение для предыдущего целого числа, 102604, я снова получаю ту же ошибку «Ошибка спектра».
Мой манифест выглядит так:
{
"entries": [
{"url":"s3://path/filename1.csv", "meta": { "content_length": 102605 } },
{"url":"s3://path/filename2.csv", "meta": { "content_length": 102605 } }
]
}
Кто-нибудь здесь сталкивался с таким сценарием и может поделиться своими впечатлениями.