alibaba / DataX

DataX是阿里云DataWorks数据集成的开源版本。
Other
16k stars 5.46k forks source link

datax_v202309并没有实现 HdfsReader/HdfsWriter支持parquet读写能力 #2120

Open qxundream opened 6 months ago

qxundream commented 6 months ago

我下了datax_v202309,设置hdfsreader的 "fileType": "parquet",运行的时候报错: image 检查代码发现很多地方实际上没有支持parquet格式,如: com.alibaba.datax.plugin.reader.hdfsreader.DFSUtil#checkHdfsFileType

public boolean checkHdfsFileType(String filepath, String specifiedFileType) {

    Path file = new Path(filepath);

    try {
        FileSystem fs = FileSystem.get(hadoopConf);
        FSDataInputStream in = fs.open(file);

        if (StringUtils.equalsIgnoreCase(specifiedFileType, Constant.CSV)
                || StringUtils.equalsIgnoreCase(specifiedFileType, Constant.TEXT)) {

            boolean isORC = isORCFile(file, fs, in);// 判断是否是 ORC File
            if (isORC) {
                return false;
            }
            boolean isRC = isRCFile(filepath, in);// 判断是否是 RC File
            if (isRC) {
                return false;
            }
            boolean isSEQ = isSequenceFile(filepath, in);// 判断是否是 Sequence File
            if (isSEQ) {
                return false;
            }
            // 如果不是ORC,RC和SEQ,则默认为是TEXT或CSV类型
            return !isORC && !isRC && !isSEQ;

        } else if (StringUtils.equalsIgnoreCase(specifiedFileType, Constant.ORC)) {

            return isORCFile(file, fs, in);
        } else if (StringUtils.equalsIgnoreCase(specifiedFileType, Constant.RC)) {

            return isRCFile(filepath, in);
        } else if (StringUtils.equalsIgnoreCase(specifiedFileType, Constant.SEQ)) {

            return isSequenceFile(filepath, in);
        }

    } catch (Exception e) {
        String message = String.format("检查文件[%s]类型失败,目前支持ORC,SEQUENCE,RCFile,TEXT,CSV五种格式的文件," +
                "请检查您文件类型和文件是否正确。", filepath);
        LOG.error(message);
        throw DataXException.asDataXException(HdfsReaderErrorCode.READ_FILE_ERROR, message, e);
    }
    return false;
}

这里面还是没有支持parquet格式

Seeumt commented 6 months ago

请问datax 支持hive的orc事务表读取吗?

qxundream commented 6 months ago

请问datax 支持hive的orc事务表读取吗?

orc是支持的,202309版本说支持了parquet,实际上又没支持,感觉有点奇怪

Seeumt commented 6 months ago

请问datax 支持hive的orc事务表读取吗?

orc是支持的,202309版本说支持了parquet,实际上又没支持,感觉有点奇怪

https://github.com/alibaba/DataX/blob/master/hdfsreader/doc/hdfsreader.md

HdfsReader提供了读取分布式文件系统数据存储的能力。在底层实现上,HdfsReader获取分布式文件系统上文件的数据,并转换为DataX传输协议传递给Writer。

目前HdfsReader支持的文件格式有textfile(text)、orcfile(orc)、rcfile(rc)、sequence file(seq)和普通逻辑二维表(csv)类型格式的文件,且文件内容存放的必须是一张逻辑意义上的二维表。

HdfsReader需要Jdk1.7及以上版本的支持。

里面好像没说有parquet

qxundream commented 6 months ago

请问datax 支持hive的orc事务表读取吗?

orc是支持的,202309版本说支持了parquet,实际上又没支持,感觉有点奇怪

https://github.com/alibaba/DataX/blob/master/hdfsreader/doc/hdfsreader.md

HdfsReader提供了读取分布式文件系统数据存储的能力。在底层实现上,HdfsReader获取分布式文件系统上文件的数据,并转换为DataX传输协议传递给Writer。

目前HdfsReader支持的文件格式有textfile(text)、orcfile(orc)、rcfile(rc)、sequence file(seq)和普通逻辑二维表(csv)类型格式的文件,且文件内容存放的必须是一张逻辑意义上的二维表。

HdfsReader需要Jdk1.7及以上版本的支持。

里面好像没说有parquet

你去看v202309的版本说明吧 ,最后一条:HdfsReader/HdfsWriter 支持parquet读写能力