Код: Выделить всё
Caused by: org.apache.parquet.io.ParquetDecodingException: could not verify page integrity, CRC checksum verification failed
< /code>
Эта таблица была передана по FTP. Ошибка была разрешена, когда я удалил таблицу в пункте назначения и снова передал ее из источника. Следовательно, один, если не больше паркетных файлов, должен был быть поврежден при передаче по сети во время первой попытки. к повреждению данных в транзите. Я хочу осмотреть другие таблицы, которые были перенесены с использованием этой же общей работы. Тем не менее, я подозреваю, что базовые паркетные файлы большинства этих таблиц не содержат контрольной суммы. В противном случае вероятность того, что моя команда сталкивалась с этой ошибкой раньше. Если в файле присутствует контрольная сумма, она будет целым числом и в противном случае NA
- Parquet/data-storage-apache-parquet/read
- https://nanoparquet.r-lib.org/reference ... pages.html
- https://lists.apache.org/thread/16oqolr ... mzc8m6ln0k
Обновление 2025-01-30 < /strong> < /p>
Я не обнаружил решение в Python после дальнейшего копание. Python Packages Parquet-Tools и Parquet-Cli недостаточно детализируются. Тем не менее, Java-версия Parquet-Tools подходит. Самый простой способ, которым я смог получить работу Java,-это использовать версию Docker: https://github.com/rm3l/docker-parquet-tools
$docker container run -v ./local/path/to/parquet:/container/path/to/parquet --rm -t rm3l/parquet-tools:latest dump -n /container/path/to/parquet/test.parquet
< /code>
Я запустил два эксперимента ниже, чтобы определить, могу ли я надежно обнаружить поврежденные паркетные файлы. < /p>
test a: < /p>
data = [("John", 28), ("Anna", 23), ("Mike", 35), ("Sara", 30), ("David", 40)]
columns = ["Name", "Age"]
df = spark.createDataFrame(data, columns)
df.repartition(1).write.option("parquet.page.write-checksum.enabled", "true").parquet(...)
< /code>
Затем с использованием вывода Parquet-Tools, включающих в себя строку ниже: < /p>
Страница 0: dle: rle rle: bit_packed VLE: Plain ST: [Нет статистики для этого
column] crc: [страница corpt] < /strong> sz: 47 Vc: 5 < /p>
< /blockquote>
тест b: < /p>
data = [("John", 28), ("Anna", 23), ("Mike", 35), ("Sara", 30), ("David", 40)]
columns = ["Name", "Age"]
df = spark.createDataFrame(data, columns)
df.repartition(1).write.option("parquet.page.write-checksum.enabled", "false").parquet(...)
< /code>
Затем с использованием вывода Parquet-Tools, включающих в себя строку ниже: < /p>
Страница 0: dle: rle rle: bit_packed VLE: Plain ST: [Нет статистики для этого
column] crc: [none] < /strong> sz: 47 vc: 5 < /p>
< /blockquote>
Результаты теста a очень неожиданные, потому что он не должен был привести к повреждению файла, и все же я читаю CRC: [страница corrupt], а не ожидаемое целочисленное значение.
Подробнее здесь: https://stackoverflow.com/questions/793 ... rquet-file