Получение файловых данных из HDFS с помощью Python Snakebite
Предварительное условие: установка 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.