Операции с файлами
Аналогично вы можете использовать параметр -ls
, чтобы вывести список файлов в указанной директории:
/home/hadoop/hadoop/bin/hdfs dfs -ls /user/hadoop
Список файлов, отображаемых здесь, может отличаться в зависимости от экспериментальной среды.
Если вам нужно просмотреть содержимое файла, вы можете использовать параметр cat
. Самым простым способом является прямой указание пути к файлу на HDFS. Если вам нужно сравнить локальную директорию с файлами на HDFS, вы можете указать их пути отдельно. Однако следует отметить, что локальная директория должна начинаться с индикатора file://
, за которым следует путь к файлу (например, /home/hadoop/.bashrc
, не забывайте /
в начале). В противном случае любой путь, указанный здесь, по умолчанию будет восприниматься как путь на HDFS:
/home/hadoop/hadoop/bin/hdfs dfs -cat file:///home/hadoop/.bashrc /user/hadoop/mapred-env.sh
Вывод будет таким:
hadoop:~$ hdfs dfs -cat file:///home/hadoop/.bashrc /user/hadoop/mapred-env.sh
## ~/.bashrc: executed by bash(1) for non-login shells.
## see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
## for examples
## If not running interactively, don't do anything
case $- in
...
Если вам нужно скопировать файл в другой путь, вы можете использовать параметр cp
:
/home/hadoop/hadoop/bin/hdfs dfs -cp /user/hadoop/mapred-env.sh /user/hadoop/copied_file.txt
Аналогично, если вам нужно переместить файл, используйте параметр mv
. Это в основном то же самое, что и формат команды для файловой системы Linux:
/home/hadoop/hadoop/bin/hdfs dfs -mv /user/hadoop/mapred-env.sh /moved_file.txt
Используйте параметр lsr
, чтобы вывести содержимое текущей директории, включая содержимое поддиректорий. Вывод будет таким:
hdfs dfs -lsr /
Если вы хотите добавить некоторое новое содержимое в файл на HDFS, вы можете использовать параметр appendToFile
. При этом при указании пути к локальному файлу, который нужно добавить, вы можете указать несколько файлов. Последним параметром будет объект, в который нужно добавить содержимое. Файл должен существовать на HDFS, иначе будет выдано сообщение об ошибке:
echo 1 >> a.txt
echo 2 >> b.txt
/home/hadoop/hadoop/bin/hdfs dfs -appendToFile a.txt b.txt /user/hadoop/mapred-env.sh
Вы можете использовать параметр tail
, чтобы просмотреть содержимое конца файла (последнюю часть файла) и подтвердить, был ли добавлен новый текст успешно:
/home/hadoop/hadoop/bin/hdfs dfs -tail /user/hadoop/mapred-env.sh
Посмотрите на вывод команды tail
:
hadoop:~$ echo 1 >> a.txt
echo 2 >> b.txt
hdfs dfs -appendToFile a.txt b.txt /user/hadoop/mapred-env.sh
hadoop:~$ hdfs dfs -tail /user/hadoop/mapred-env.sh
1
2
Если вам нужно удалить файл или директорию, используйте параметр rm
. Этот параметр также может быть дополнен -r
и -f
, которые имеют те же значения, что и для команды rm
файловой системы Linux:
/home/hadoop/hadoop/bin/hdfs dfs -rm /moved_file.txt
Содержимое файла moved_file.txt
будет удалено, и команда вернет следующий вывод 'Deleted /moved_file.txt'