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).