Учебники

HCatalog — Загрузчик и Хранитель

API-интерфейсы HCatLoader и HCatStorer используются со сценариями Pig для чтения и записи данных в таблицы, управляемые HCatalog. Для этих интерфейсов не требуется настройка, специфичная для HCatalog.

Лучше иметь некоторые знания о скриптах Apache Pig, чтобы лучше понять эту главу. Для дальнейшего ознакомления, пожалуйста, ознакомьтесь с нашим руководством Apache Pig .

HCatloader

HCatLoader используется со сценариями Pig для чтения данных из таблиц, управляемых HCatalog. Используйте следующий синтаксис для загрузки данных в HDFS с использованием HCatloader.

A = LOAD 'tablename' USING org.apache.HCatalog.pig.HCatLoader();

Вы должны указать имя таблицы в одинарных кавычках: LOAD ‘tablename’ . Если вы используете базу данных не по умолчанию, то вы должны указать свой ввод как ‘ dbname.tablename’ .

Метастабор Hive позволяет создавать таблицы без указания базы данных. Если вы создали таблицы таким способом, тогда имя базы данных будет «default» и не требуется при указании таблицы для HCatLoader.

Следующая таблица содержит важные методы и описание класса HCatloader.

Sr.No. Название и описание метода
1

public InputFormat <?,?> getInputFormat () выдает IOException

Прочитайте формат ввода данных загрузки, используя класс HCatloader.

2

public StringlativeToAbsolutePath (расположение строки, путь curDir) выдает IOException

Возвращает строковый формат абсолютного пути .

3

public void setLocation (расположение строки, задание) выдает IOException

Он устанавливает место, где можно выполнить задание.

4

public Tuple getNext () генерирует IOException

Возвращает текущий кортеж ( ключ и значение ) из цикла.

public InputFormat <?,?> getInputFormat () выдает IOException

Прочитайте формат ввода данных загрузки, используя класс HCatloader.

public StringlativeToAbsolutePath (расположение строки, путь curDir) выдает IOException

Возвращает строковый формат абсолютного пути .

public void setLocation (расположение строки, задание) выдает IOException

Он устанавливает место, где можно выполнить задание.

public Tuple getNext () генерирует IOException

Возвращает текущий кортеж ( ключ и значение ) из цикла.

HCatStorer

HCatStorer используется со сценариями Pig для записи данных в таблицы, управляемые HCatalog. Используйте следующий синтаксис для операции хранения.

A = LOAD ...
B = FOREACH A ...
...
...
my_processed_data = ...

STORE my_processed_data INTO 'tablename' USING org.apache.HCatalog.pig.HCatStorer();

Вы должны указать имя таблицы в одинарных кавычках: LOAD ‘tablename’ . И база данных, и таблица должны быть созданы до запуска скрипта Pig. Если вы используете базу данных не по умолчанию, то вы должны указать свой ввод как ‘dbname.tablename’ .

Метастабор Hive позволяет создавать таблицы без указания базы данных. Если вы создали таблицы таким образом, тогда имя базы данных будет «default», и вам не нужно указывать имя базы данных в операторе store .

Для предложения USING у вас может быть строковый аргумент, представляющий пары ключ / значение для разделов. Это обязательный аргумент, когда вы пишете в многораздельную таблицу, а столбец раздела отсутствует в выходном столбце. Значения ключей раздела НЕ должны быть в кавычках.

Следующая таблица содержит важные методы и описание класса HCatStorer.

Sr.No. Название и описание метода
1

public OutputFormat getOutputFormat () выбрасывает IOException

Прочитайте выходной формат сохраненных данных, используя класс HCatStorer.

2

public void setStoreLocation (расположение строки, задание) выдает IOException

Устанавливает место, где выполнить это приложение магазина .

3

public void storeSchema (схема ResourceSchema, String arg1, Job job) выдает IOException

Сохраните схему.

4

public void prepareToWrite (писатель RecordWriter) бросает IOException

Это помогает записывать данные в определенный файл, используя RecordWriter.

5

public void putNext (Tuple tuple) выдает IOException

Записывает данные кортежа в файл.

public OutputFormat getOutputFormat () выбрасывает IOException

Прочитайте выходной формат сохраненных данных, используя класс HCatStorer.

public void setStoreLocation (расположение строки, задание) выдает IOException

Устанавливает место, где выполнить это приложение магазина .

public void storeSchema (схема ResourceSchema, String arg1, Job job) выдает IOException

Сохраните схему.

public void prepareToWrite (писатель RecordWriter) бросает IOException

Это помогает записывать данные в определенный файл, используя RecordWriter.

public void putNext (Tuple tuple) выдает IOException

Записывает данные кортежа в файл.

Бегущая Свинья с HCatalog

Свинья не собирает банки HCatalog автоматически. Чтобы ввести необходимые файлы jar , вы можете либо использовать флаг в команде Pig, либо установить переменные окружения PIG_CLASSPATH и PIG_OPTS, как описано ниже.

Чтобы ввести соответствующие банки для работы с HCatalog, просто включите следующий флаг:

pig –useHCatalog <Sample pig scripts file>

Настройка CLASSPATH для выполнения

Используйте следующую настройку CLASSPATH для синхронизации HCatalog с Apache Pig.

export HADOOP_HOME = <path_to_hadoop_install>
export HIVE_HOME = <path_to_hive_install>
export HCAT_HOME = <path_to_hcat_install>

export PIG_CLASSPATH = $HCAT_HOME/share/HCatalog/HCatalog-core*.jar:\
$HCAT_HOME/share/HCatalog/HCatalog-pig-adapter*.jar:\
$HIVE_HOME/lib/hive-metastore-*.jar:$HIVE_HOME/lib/libthrift-*.jar:\
$HIVE_HOME/lib/hive-exec-*.jar:$HIVE_HOME/lib/libfb303-*.jar:\
$HIVE_HOME/lib/jdo2-api-*-ec.jar:$HIVE_HOME/conf:$HADOOP_HOME/conf:\
$HIVE_HOME/lib/slf4j-api-*.jar

пример

Предположим, у нас есть файл student_details.txt в HDFS со следующим содержимым.

student_details.txt

001, Rajiv,    Reddy,       21, 9848022337, Hyderabad
002, siddarth, Battacharya, 22, 9848022338, Kolkata
003, Rajesh,   Khanna,      22, 9848022339, Delhi
004, Preethi,  Agarwal,     21, 9848022330, Pune
005, Trupthi,  Mohanthy,    23, 9848022336, Bhuwaneshwar
006, Archana,  Mishra,      23, 9848022335, Chennai
007, Komal,    Nayak,       24, 9848022334, trivendram
008, Bharathi, Nambiayar,   24, 9848022333, Chennai

У нас также есть пример сценария с именем sample_script.pig в том же каталоге HDFS. Этот файл содержит операторы, выполняющие операции и преобразования в отношении студента , как показано ниже.

student = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING 
   PigStorage(',') as (id:int, firstname:chararray, lastname:chararray,
   phone:chararray, city:chararray);
	
student_order = ORDER student BY age DESC;
STORE student_order INTO 'student_order_table' USING org.apache.HCatalog.pig.HCatStorer();
student_limit = LIMIT student_order 4;
Dump student_limit;
  • Первая инструкция скрипта загрузит данные в файл student_details.txt в виде отношения с именем student .

  • Второе утверждение скрипта упорядочит кортежи отношения в порядке убывания в зависимости от возраста и сохранит его как student_order .

  • Третий оператор хранит обработанные данные результатов student_order в отдельной таблице с именем student_order_table .

  • Четвертое утверждение скрипта будет хранить первые четыре кортежа student_order как student_limit .

  • Наконец, пятое утверждение выведет содержимое отношения student_limit .

Первая инструкция скрипта загрузит данные в файл student_details.txt в виде отношения с именем student .

Второе утверждение скрипта упорядочит кортежи отношения в порядке убывания в зависимости от возраста и сохранит его как student_order .

Третий оператор хранит обработанные данные результатов student_order в отдельной таблице с именем student_order_table .

Четвертое утверждение скрипта будет хранить первые четыре кортежа student_order как student_limit .

Наконец, пятое утверждение выведет содержимое отношения student_limit .

Давайте теперь выполним пример sample_script.pig, как показано ниже.

$./pig -useHCatalog hdfs://localhost:9000/pig_data/sample_script.pig

Теперь проверьте выходной каталог (hdfs: user / tmp / hive) для вывода (part_0000, part_0001).