Установка Apache Pig в Windows и пример использования

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

Apache Pig - это инструмент для обработки данных, созданный на основе Hadoop MapReduce. Pig предоставляет нам язык сценариев для более простого и быстрого манипулирования данными. Этот язык сценариев называется Pig Latin.

Скрипты Apache Pig можно выполнить тремя способами:

  • Использование оболочки Grunt (интерактивный режим) - напишите команды в оболочке grunt и получите результат самостоятельно с помощью команды DUMP.
  • Использование сценариев Pig (пакетный режим) - запишите латинские команды pig в один файл с расширением .pig и выполните сценарий в командной строке.
  • Использование пользовательских функций (встроенный режим) - напишите свои собственные функции на таких языках, как Java, а затем используйте их в сценариях.

Установка свиньи:

Прежде чем продолжить, вам необходимо убедиться, что у вас есть все эти предварительные условия.

  1. Экосистема Hadoop установлена в вашей системе, и все четыре компонента, то есть DataNode, NameNode, ResourceManager, TaskManager, работают. Если какой-либо из них случайно отключается, вам необходимо исправить это, прежде чем продолжить.
  2. 7-Zip требуется для извлечения файлов .tar.gz в Windows.

Давайте посмотрим, как установить версию Pig (0.17.0) в Windows следующим образом.

Шаг 1. Загрузите tar-файл Pig версии 0.17.0 с официального сайта Apache Pig. Перейдите на сайт https://downloads.apache.org/pig/latest/. Загрузите с веб-сайта файл pig-0.17.0.tar.gz.

Затем извлеките этот tar-файл с помощью инструмента 7-Zip (используйте 7-Zip для более быстрого извлечения. Сначала мы извлекаем файл .tar.gz, щелкнув его правой кнопкой мыши и выбрав «7-Zip → Извлечь сюда». Затем мы извлекаем файл .tar.gz. .tar файл таким же образом). Чтобы иметь те же пути, что и на схеме, вам необходимо извлечь файлы на диск C :.

Шаг 2: Добавьте переменные пути PIG_HOME и PIG_HOME bin

Нажмите кнопку Windows и в строке поиска введите «Переменные среды». Затем нажмите «Изменить системные переменные среды».

Затем нажмите «Переменные среды» в нижней части вкладки. Во вновь открытой вкладке нажмите кнопку «Создать» в разделе пользовательских переменных.

После нажатия нового Добавьте следующие значения в поля.

Variable Name  -  PIG_HOME
Variable value -  C:pig-0.17.0

Весь путь к извлеченной папке свиней в поле Variable Value. Я извлек его в каталог «C». Затем нажмите ОК.

Теперь нажмите на переменную Path в Системных переменных. Это откроет новую вкладку. Затем нажмите кнопку «Новый». И добавьте значение C: pig-0.17.0 bin в текстовое поле. Затем нажимайте ОК, пока все вкладки не закроются.

Шаг 3 : исправление командного файла Pig

Найдите файл pig.cmd в папке bin файла pig (C: pig-0.17.0 bin)

 установить HADOOP_BIN_PATH =% HADOOP_HOME%  bin

Найдите строку:

 установить HADOOP_BIN_PATH =% HADOOP_HOME%  bin

Замените эту строку на:

 установить HADOOP_BIN_PATH =% HADOOP_HOME%  libexec

И сохраните этот файл. Наконец-то мы здесь. Теперь вы готовы приступить к изучению Свиньи и ее окружающей среды.

Есть 2 способа вызвать оболочку grunt:

Локальный режим: все файлы устанавливаются, открываются и запускаются на самом локальном компьютере. Нет необходимости использовать HDFS. Команда для запуска Pig в локальном режиме выглядит следующим образом.

 свинья -x местный

Режим MapReduce: все файлы находятся в HDFS. Нам нужно загрузить эти данные, чтобы обработать их. Команда для запуска Pig в режиме MapReduce / HDFS выглядит следующим образом.

 свинья -x mapreduce

ПРИМЕР ИЗ ПРАКТИКИ Apache PIG:

1. Загрузите набор данных, содержащий данные, относящиеся к сельскому хозяйству, о сельскохозяйственных культурах в различных регионах, их площади и продукции. Ссылка на набор данных - https://www.kaggle.com/abhinand05/crop-production-in-india Набор данных содержит 7 столбцов, а именно:

 State_Name: chararray; 
Название района: chararray;  
Crop_Year: int; 
Сезон: чараррей; 
Урожай: чараррей;  
Площадь: внутр .; 
Производство: int
 Кол- во рядов: 246092 
Кол-во столбцов : 7

2. Войдите в локальный режим скребка, используя

 ворчание> свинья -x местный

3. Загрузите набор данных в локальном режиме.

 grunt> сельское хозяйство = ЗАГРУЗИТЬ 'F: / csv files / crop_production.csv' с использованием PigStorage (',') 
        как (State_Name: chararray, District_Name: chararray, Crop_Year: int, 
        Сезон: chararray, Урожай: chararray, Площадь: int, Производство: int);

4. Сделайте дамп и опишите набор данных по сельскому хозяйству, используя

 хрюканье> свалка земледелия;
ворчание> опишите сельское хозяйство;

5. Выполнение запросов PIG в локальном режиме.

Вы можете следовать этим письменным запросам для анализа набора данных с помощью различных функций и операторов в PIG. Прежде чем продолжить, вам необходимо выполнить все вышеперечисленные шаги.

Запрос 1: Группировка всех записей по состоянию.

Эта команда сгруппирует все записи по столбцу State_Name.

 grunt> statewisecrop = ГРУППА сельское хозяйство ПО ИМЕНИ СОСТОЯНИЯ;
grunt> DUMP statewisecrop;
grunt> ОПИСАТЬ statewisecrop;

Теперь сохраните результат запроса в файле CSV для лучшего понимания. Мы должны указать имя объекта и путь, по которому он должен быть сохранен.

 путь -> 'F: / csv files / statewiseoutput'
grunt> СОХРАНИТЬ statewisecrop В 'F: / csv files / statewiseoutput';

Результат будет в файле с именем «part-r-00000», который необходимо переименовать в « part-r-00000.csv », чтобы открыть его в формате Excel и сделать его читабельным. Вы найдете этот файл по пути, который мы указали в приведенном выше запросе. В моем случае это было по пути «F: / csv files / statewiseoutput /».

Выходной файл будет выглядеть примерно так:

CSV-файл вывода запроса 1

Вы также можете проверить необработанный файл, открыв командную строку в режиме администратора и написав следующую команду.

 C:  Users  Adhiksha > Head -2 'F:  csv files  statewiseoutput  part-r-00000.csv';

Эта команда возвращает две верхние записи файла результатов вывода по состояниям. Выглядит примерно так.

Вывод запроса №1

Запрос 2: Генерация общего урожая с учетом производства и площадей

В приведенном выше запросе нам нужно сгруппировать по типу урожая, а затем найти СУММУ их продукции и площади.

 grunt> cropinfo = FOREACH (ГРУППОВОЕ сельское хозяйство ПО Урожаям)
GENERATE group AS Crop, SUM (сельское хозяйство.Площадь) как AreaPerCrop, 
СУМ (сельское хозяйство.Производство) как ProductionPerCrop;
хрюкать> ОПИСАТЬ cropinfo;

 grunt> СОХРАНИТЬ cropinfo В 'F: / csv files / cropinfooutput';

Результат будет в файле с именем «part-r-00000», который необходимо переименовать в «part-r-00000.csv», чтобы открыть его в формате Excel и сделать его читабельным.

Вы можете проверить вывод csv, открыв командную строку в режиме администратора и выполнив следующую команду.

 C:  Users> cat 'F: / csv files / cropinfooutput / part-r-00000.csv'

Это вернет весь вывод в командной строке. Вы можете видеть, что у нас есть три столбца на выходе.

Выход:

 Обрезать , 
AreaperCrop, 
ProductionPerCrop.

Вопрос 3: большинство культур выращивается в сезон и в каком году.

В этом запросе нам нужно сгруппировать культуры по сезонам и расположить их в алфавитном порядке. Кроме того, это расскажет нам, какие культуры встречаются в сезоне и году.

 grunt> seasoncrops = FOREACH (ГРУППОВОЕ сельское хозяйство по сезонам) {
                        order_crops = ЗАКАЗАТЬ сельское хозяйство ПО ASC урожая;
                        GENERATE группа AS Season, order_crops. (Crop) AS Crops;
                        };

 grunt> ОПИСАТЬ сезонные культуры;

 grunt> СОХРАНИТЬ сезонные урожаи В 'F: / csv files / seasonoutput;

Вывод будет в файле с именем «part-r-00000», который необходимо переименовать в «part-r-00000.csv», чтобы открыть его в формате Excel и сделать его читабельным. Вы можете проверить вывод csv, открыв командную строку в режиме администратора и выполнив следующую команду.

 C:  Users> cat 'F: / csv files / Seasonoutput / part-r-00000.csv'

Вы можете проверить вывод «part-r-00000.csv», открыв файл. Вы можете увидеть все отчетливые сезоны в первом ряду, за которыми следуют все культуры и годы их производства.

Вывод этого запроса номер 3

Вопрос 4: Средняя урожайность сельскохозяйственных культур в каждом районе после 2000 года.

Во-первых, нам нужно сгруппировать по названию района, а затем найти среднее значение от общего производства сельскохозяйственных культур, но только после 2000 года.

 grunt> averagecrops = FOREACH (ГРУППА сельское хозяйство по имени района) {
                       after_year = ФИЛЬТР сельского хозяйства ПО ГОДУ урожая> 2000;
                       GENERATE group AS District_Name, AVG (after_year. (Производство)) AS
                       AvgProd;
                       };

 хрюкать> ОПИСАТЬ средние урожаи;

 grunt> СОХРАНИТЬ averagecrops В 'F: / csv files / averagecrops;

Вы можете проверить вывод «part-r-00000.csv», открыв файл. Этот файл будет содержать две колонки. Первый имеет все отдельные названия районов, а второй будет иметь среднее производство всех культур в каждом районе после 2000 года.

Вывод запроса № 4

Вопрос 5: самые высокие урожаи и подробная информация по каждому штату.

Во-первых, нам нужно сгруппировать ввод по имени состояния. Затем выполните итерацию по каждой сгруппированной записи, а затем найдите ТОП-1 запись с самым высоким уровнем производства в каждом состоянии.

 grunt> top_agri = ГРУППА сельское хозяйство ПО ИМЕНИ СОСТОЯНИЯ;
grunt> data_top = FOREACH top_agri {
                   top = TOP (1, 6, сельское хозяйство);
                   СОЗДАТЬ вершину как запись;
                   }

 хрюкать> ОПИСАТЬ cropinfo;