You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用parquet-tools 1.11.2获取Parquet文件头版本?求替代方案

替代方案:在Parquet-tools 1.11.2中获取文件格式版本

方案1:手动解析Parquet文件头部

Parquet文件的前8字节包含关键版本信息:前4字节是固定魔术数字PAR1,后4字节为小端序存储的文件格式版本号。你可以直接读取这部分内容解析版本:

示例Java代码:

import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;

public class ParquetVersionReader {
    public static int getParquetFileVersion(String filePath) throws Exception {
        try (RandomAccessFile raf = new RandomAccessFile(filePath, "r")) {
            byte[] headerBytes = new byte[8];
            raf.readFully(headerBytes);
            
            // 验证是否为合法Parquet文件
            String magic = new String(headerBytes, 0, 4);
            if (!"PAR1".equals(magic)) {
                throw new IllegalArgumentException("输入不是有效Parquet文件");
            }
            
            // 解析小端序版本号
            ByteBuffer versionBuffer = ByteBuffer.wrap(headerBytes, 4, 4);
            versionBuffer.order(ByteOrder.LITTLE_ENDIAN);
            return versionBuffer.getInt();
        }
    }

    public static void main(String[] args) throws Exception {
        int version = getParquetFileVersion("target-file.parquet");
        System.out.println("Parquet文件格式版本: v" + version);
    }
}

方案2:直接调用parquet-hadoop底层API

parquet-tools 1.11.2依赖的parquet-hadoop库提供了读取元数据的原生API,可绕过tools层直接获取版本:

先确保引入依赖(若未添加):

<dependency>
    <groupId>org.apache.parquet</groupId>
    <artifactId>parquet-hadoop</artifactId>
    <version>1.11.2</version>
</dependency>

示例代码:

import org.apache.parquet.hadoop.ParquetFileReader;
import org.apache.parquet.hadoop.metadata.ParquetMetadata;
import org.apache.hadoop.fs.Path;

public class ParquetMetadataReader {
    public static int getParquetVersion(String filePath) throws Exception {
        Path file = new Path(filePath);
        try (ParquetFileReader reader = ParquetFileReader.open(file)) {
            ParquetMetadata metadata = reader.getFooter();
            return metadata.getFileMetaData().getVersion();
        }
    }

    public static void main(String[] args) throws Exception {
        int version = getParquetVersion("target-file.parquet");
        System.out.println("Parquet文件格式版本: v" + version);
    }
}

方案3:命令行工具查看

如果仅需查看版本无需编码,可使用parquet-tools自带的meta命令,输出中会直接显示版本字段:

parquet-tools meta target-file.parquet

输出示例中会包含类似行:

version: 2

内容的提问来源于stack exchange,提问作者Aravind Yarram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:08:29