Получение файловых данных из HDFS с помощью Python Snakebite

Опубликовано: 18 Февраля, 2022

Предварительное условие: установка Hadoop, HDFS

Python Snakebite - очень популярная библиотека Python, которую мы можем использовать для связи с HDFS. Используя клиентскую библиотеку Python, предоставляемую пакетом Snakebite, мы можем легко написать код Python, работающий в HDFS. Он использует сообщения protobuf для прямой связи с NameNode. Клиентская библиотека python напрямую работает с HDFS без системного вызова hdfs dfs . Snakebite не поддерживает python3.

Hdfs dfs предоставляет несколько команд, с помощью которых мы можем выполнять несколько операций с HDFS. Клиентская библиотека, которую предоставляет Snakebite, будет содержать различные методы, которые позволяют нам получать данные из HDFS. Метод text () используется для простого чтения данных из файла, доступного в нашей HDFS. Итак, давайте выполним быструю задачу, чтобы понять, как мы можем получить данные из файла из HDFS.

Задача: получение файловых данных из HDFS.

Шаг 1. Создайте текстовый файл с именем data.txt и добавьте в него данные.

cd Documents/        # Changing directory to Documents(You can choose as per your requirement)

touch data.txt         # touch command is used to create file in linux enviournment

nano data.txt        # nano is a command line text editor for Unix and Linux operating system

cat data.txt         # to see the content of a file 

Шаг 2. Отправьте этот файл data.txt в Hadoop HDFS с помощью команды copyFromLocal.

Синтаксис:

 hdfs dfs -copyFromLocal / путь 1 / путь 2 .... / путь n / пункт назначения

Использование команды для отправки data.txt в корневой каталог HDFS.

 hdfs dfs -copyFromLocal /home/dikshant/Documents/data.txt / 

Теперь проверьте, дошел ли файл до корневого каталога HDFS с помощью приведенной ниже команды.

 hdfs dfs -ls /

Вы можете проверить это вручную, посетив http: // localhost: 50070 / затем Утилиты -> Обзор файловой системы.

Step 3: Now our task is to read the data from data.txt we send to our HDFS. So create a file data_read.py in your local file system and add the below python code to it.  

Python

# importing the library
from snakebite.client import Client
  
# the below line create client connection to the HDFS NameNode
client = Client("localhost", 9000)
  
# iterate over data.txt file and will show all the content of data.txt
for l in client.text(["/data.txt"]):
        print l

Описание метода Client ():

Метод Client () может принимать все перечисленные ниже аргументы:

  • host (строка): IP-адрес NameNode.
  • port (int): RPC-порт Namenode.
  • hadoop_version (int): версия протокола Hadoop (по умолчанию: 9)
  • use_trash (логическое): использовать корзину при удалении файлов.
  • Effective_use (строка): эффективный пользователь для операций HDFS (пользователь по умолчанию - текущий пользователь).

Шаг 4: Запустите файл read_data.py и посмотрите на результат.

 python read_data.py

Мы успешно извлекли данные из data.txt с помощью клиентской библиотеки.

We can also copy any file from HDFS to our Local file system with the help of Snakebite. To copy a file from HDFS create a file fetch_file.py  and copy the below python code to it. copyToLocal() method is used to achieve this.

Python

from snakebite.client import Client
client = Client("localhost", 9000)
for a in client.copyToLocal(["/data.txt"], "/home/dikshant/Desktop"):
        print a

Теперь запустите этот файл python, и вы увидите следующий результат.

 python fetch_file.py

Мы можем заметить, что теперь файл скопирован в мой каталог / home / dikshant / desktop .

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.