Определение, является ли ввод паркетным или плоским файлом

#java #maven #apache-spark-sql #parquet #flat-file

#java #maven #apache-spark-sql #паркет #плоский файл

Вопрос:

Я работаю над проектом Java Maven, и я дошел до того, что мне нужно определить, является ли мой ввод из HDFS каталогом файлов CSV или файлом Parquet. Насколько я понимаю, и я могу ошибаться, я считаю, что HDFS хранит паркетные файлы в виде каталогов.

Мой вопрос в том, что может быть хорошим способом определения разницы между этими двумя потенциальными входами, чтобы я мог обрабатывать каждый из них соответствующим образом?

Ответ №1:

Вы можете использовать API файловой системы Hadoop.

Если вы хотите проверить, является ли an hdfsPath каталогом или файлом, используйте 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
}
 

Чтобы проверить, содержит ли каталог паркетные файлы в файлах CSV, вы можете использовать listStatus метод для перечисления файлов в этом каталоге, и для каждого файла вы можете проверить его расширение, чтобы определить его тип ( .csv или .parquet ).