apache-spark - 为什么读取 parquet 文件时出现“不是 Parquet 文件”错误
问题描述
从 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 文件。由同一作业编写的其他镶木地板文件不会引发此错误
解决方案
今天遇到同样的错误。对我们来说,问题是我们生成了大于 2GB 的 parquet 文件,这会破坏一些客户端。
https://issues.apache.org/jira/browse/SPARK-24296
设置 spark 选项maxRecordsPerFile
来限制为我们固定的文件大小。
推荐阅读
- java - 如何在单个请求中发送多个 JSON(Jmeter)
- kubernetes - 等待 http-01 质询传播:未能执行自我超时
- javascript - 在 JavaScript 中通过构造函数定义方法
- java - 在 Windows 10 中,Java swing 组件在屏幕上的位置在 x 轴上偏移 10 个像素
- android - 字体在 android 模拟器中没有变化,但在预览中可以正常工作
- ios - 使用 Firebase/Crashlytics 更改 Fabric 和 Crashlytics pod 以上传缺少的必需 dSYM
- python - 如何根据偏移量和方向在 Python 中对列表进行排序?
- python - xarray 坐标相关计算
- jquery - 在反应中使用 jquery 的第三方库的动画
- python - 在 requirements.txt 中不包含我自己的包的最佳方法是什么?