Невозможно получить количество папок в HDFS с помощью Java

У меня есть путь к папке HDFS, как показано ниже.

sampleFolder / b / c / file1.orc \ n sampleFolder / d / file2.orc \ n sampleFolder / d / file3.orc

Я хочу получить количество файлов и папок по пути HDFS «sampleFolder». Ожидаемый результат должен быть 6 (т.е. папка b, папка c, папка d, file1.orc, file2.orc и file3.orc). Но всегда отображается только количество файлов, а не количество папок.

Я пытаюсь выполнить код ниже, но всегда получаю вывод как

Файл Количество файлов: 3

sHiveFilePath - hdfs: //10.1.1.1: 8020 / sampleFolder.

Может кто-нибудь направить?

RemoteIterator<LocatedFileStatus> ri = hdfs.listFiles(sHiveFilePath, true);
                    LocatedFileStatus current = null;
                    while (ri.hasNext()) {
                        current = ri.next();
                        if (current.isFile()) {
                            System.out.println("File");
                            System.out.println("FileCount: " + fileCount++);
                        }
                        if (current.isDir()){
                            System.out.println("Directory");
                            System.out.println("Dir Count: " + fileCount++);
                        }
                    }

Вероятно, вы хотели выполнить рекурсию и добавить счетчик из подпапок. Вы этого не делаете. Кроме того, разве hdfs://10.1.1.1:8020/a не должен быть hdfs://10.1.1.1:8020/sampleFolder? Что показывает hdfs dfs -ls hdfs://10.1.1.1:8020/a?

Elliott Frisch 03.09.2018 20:00

Спасибо за исправление. Да, «a» - это «SampleFolder». Я исправил это в исходном вопросе. Я выполняю рекурсивную операцию. В выражении "hdfs.listFiles (sHiveFilePath, true);" истина означает рекурсивную операцию. Пожалуйста, порекомендуйте.

Pranav 03.09.2018 20:27
listFiles не перечисляет папки, только файлы внутри папок. Если вы также хотите перечислить папки, используйте вместо этого listStatus.
cheseaux 03.09.2018 20:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
39
0

Другие вопросы по теме