GOOGLE ADS

воскресенье, 8 мая 2022 г.

Подсчет файлов в каталоге HDFS с помощью Scala

В Scala я пытаюсь подсчитать файлы из каталога Hdfs. Я попытался получить список файлов с помощью val files = fs.listFiles(path, false)и подсчитать его или получить его размер, но он не работает, поскольку filesтипRemoteIterator[LocatedFileStatus]

Любая идея о том, как я должен обрабатывать?

Спасибо за помощь


Решение проблемы

Это было сделано раньше, но обычно люди используют FSImage. (Копия файла узла имени.)

Затем они помещают это в таблицу кустов, а затем вы можете запросить информацию о вашей файловой системе hdfs.

Вот действительно хороший учебник, который объясняет, как экспортировать fsimage и добавить его в таблицу кустов.

Вот еще один , который я думаю, что я предпочитаю:


Получите и скопируйте файл fsimage в HDFS #подключитесь к любому узлу кластера hadoop как пользователь hdfs

#downloads the fsimage file from namenode
hdfs dfsadmin -fetchImage /tmp
#converts the fsimage file into tab delimited file
hdfs oiv -i /tmp/fsimage_0000000000450297390 -o /tmp/fsimage.csv -p Delimited
#remove the header and copy to HDFS
sed -i -e "1d" fsimage.csv
hdfs dfs -mkdir /tmp/fsimage
hdfs dfs -copyFromLocal /tmp/fsimage.csv /tmp/fsimage
#create the intermediate external table in impala
CREATE EXTERNAL TABLE HDFS_META_D (
PATH STRING,
REPL INT,
MODIFICATION_TIME STRING,
ACCESSTIME STRING,
PREFERREDBLOCKSIZE INT,
BLOCKCOUNT DOUBLE,
FILESIZE DOUBLE,
NSQUOTA INT,
DSQUOTA INT,
PERMISSION STRING,
USERNAME STRING,
GROUPNAME STRING)
row format delimited
fields terminated by '\t'
LOCATION '/tmp/fsimage';

Как только он окажется в таблице, вы действительно сможете сделать все остальное в scala/spark.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...