#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
).