首页 > 解决方案 > 确定输入是 Parquet 还是平面文件

问题描述

我正在处理一个 Java Maven 项目,并且我已经到了需要确定来自 HDFS 的输入是 CSV 文件目录还是 Parquet 文件的地步。根据我的理解,我可能是错的,我相信 HDFS 将 Parquet 文件存储为目录。

我的问题是,确定这两个潜在输入之间差异的好方法是什么,以便我可以适当地处理它们中的每一个?

标签: javamavenapache-spark-sqlparquetflat-file

解决方案


您可以使用Hadoop FileSystem API

如果要检查 anhdfsPath是目录还是文件,请使用getFileStatus

Path path = new Path(hdfsPath);
FileSystem fs = path.getFileSystem(conf);

FileStatus fileStatus = fs.getFileStatus(path);

if (fileStatus.isFile()) {
  // .... logic for file
} else {
  // ... logic for directory
}

要检查目录是否包含 Parquet on CSV 文件,您可以使用listStatus方法列出该目录下的文件,对于每个文件,您可以检查其扩展名以确定其类型(.csv.parquet)。


推荐阅读