【发布时间】:2023-03-27 01:56:01
【问题描述】:
从 hdfs 读取 parquet 文件时出现以下错误
2020-06-04 14:11:23 WARN TaskSetManager:66 - Lost task 44.0 in stage 1.0 (TID 3514, 192.168.16.41, executor 1): java.lang.RuntimeException: hdfs://data-hadoop-hdfs-nn.hadoop:8020/somedata/serviceName=someService/masterAccount=ma/siteAccount=sa/systemCode=111/part-00170-7ff5ac19-98b7-4a5a-b93d-9e988dff07eb.c000.snappy.parquet is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [55, 49, 98, 48]
我在互联网上发现了类似的问题,但大多数人都试图阅读除 parquet 之外的其他文件类型。 我 100% 确定该文件是以 parquet 格式编写的,如日志中所示。文件名是 part-00170-7ff5ac19-98b7-4a5a-b93d-9e988dff07eb.c000.snappy.parquet 。
只有一个作业写入此 somdata 文件夹,而这个作业仅写入 parquet(spark 结构化流作业) 结尾还说是拼花文件。 由同一个作业编写的其他 parquet 文件不会抛出此错误
【问题讨论】:
-
也许可以尝试使用 parquet-tools (github.com/apache/parquet-mr/tree/master/parquet-tools) 来验证您的文件是否采用正确的 parquet 格式。
标签: apache-spark hdfs parquet