HCatalog - Loader & Storer

Plik HCatLoader i HCatStorerInterfejsy API są używane ze skryptami Pig do odczytu i zapisu danych w tabelach zarządzanych przez HCatalog. Te interfejsy nie wymagają konfiguracji specyficznej dla HCatalog.

Lepiej jest mieć trochę wiedzy na temat skryptów Apache Pig, aby lepiej zrozumieć ten rozdział. Aby uzyskać więcej informacji, przejdź do naszego samouczka Apache Pig .

HCatloader

HCatLoader jest używany ze skryptami Pig do odczytywania danych z tabel zarządzanych przez HCatalog. Użyj następującej składni, aby załadować dane do HDFS za pomocą narzędzia HCatloader.

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

Musisz podać nazwę tabeli w pojedynczych cudzysłowach: LOAD 'tablename'. Jeśli używasz innej niż domyślna bazy danych, musisz określić swoje dane wejściowe jako „dbname.tablename'.

Metastore Hive umożliwia tworzenie tabel bez określania bazy danych. Jeśli utworzyłeś tabele w ten sposób, nazwa bazy danych to'default' i nie jest wymagane podczas określania tabeli dla HCatLoader.

Poniższa tabela zawiera ważne metody i opis klasy HCatloader.

Sr.No. Nazwa i opis metody
1

public InputFormat<?,?> getInputFormat()throws IOException

Odczytaj format wejściowy danych ładowania przy użyciu klasy HCatloader.

2

public String relativeToAbsolutePath(String location, Path curDir) throws IOException

Zwraca format ciągu Absolute path.

3

public void setLocation(String location, Job job) throws IOException

Ustala lokalizację, w której zadanie może zostać wykonane.

4

public Tuple getNext() throws IOException

Zwraca bieżącą krotkę (key i value) z pętli.

HCatStorer

HCatStorer jest używany ze skryptami Pig do zapisywania danych w tabelach zarządzanych przez HCatalog. Użyj następującej składni dla operacji przechowywania.

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

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

Musisz podać nazwę tabeli w pojedynczych cudzysłowach: LOAD 'tablename'. Zarówno baza danych, jak i tabela muszą zostać utworzone przed uruchomieniem skryptu Pig. Jeśli używasz innej niż domyślna bazy danych, musisz określić dane wejściowe jako'dbname.tablename'.

Metastore Hive umożliwia tworzenie tabel bez określania bazy danych. Jeśli utworzyłeś tabele w ten sposób, nazwa bazy danych to'default' i nie musisz określać nazwy bazy danych w store komunikat.

Dla USINGklauzuli, możesz mieć argument w postaci ciągu, który reprezentuje pary klucz / wartość dla partycji. Jest to obowiązkowy argument, gdy piszesz do tabeli podzielonej na partycje, a kolumny partycji nie ma w kolumnie wyjściowej. Wartości kluczy partycji NIE powinny być cytowane.

Poniższa tabela zawiera ważne metody i opis klasy HCatStorer.

Sr.No. Nazwa i opis metody
1

public OutputFormat getOutputFormat() throws IOException

Odczytaj format wyjściowy przechowywanych danych przy użyciu klasy HCatStorer.

2

public void setStoreLocation (String location, Job job) throws IOException

Ustawia lokalizację, w której należy to wykonać store podanie.

3

public void storeSchema (ResourceSchema schema, String arg1, Job job) throws IOException

Zapisz schemat.

4

public void prepareToWrite (RecordWriter writer) throws IOException

Pomaga zapisywać dane w określonym pliku za pomocą RecordWriter.

5

public void putNext (Tuple tuple) throws IOException

Zapisuje dane krotki do pliku.

Running Pig z HCatalog

Pig nie odbiera automatycznie słoików HCatalog. Aby wprowadzić potrzebne słoiki, możesz użyć flagi w poleceniu Pig lub ustawić zmienne środowiskowePIG_CLASSPATH i PIG_OPTS tak, jak opisano poniżej.

Aby wprowadzić odpowiednie słoiki do pracy z HCatalog, wystarczy dołączyć następującą flagę -

pig –useHCatalog <Sample pig scripts file>

Ustawianie CLASSPATH do wykonania

Użyj następującego ustawienia CLASSPATH do synchronizacji HCatalog z 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

Przykład

Załóżmy, że mamy plik student_details.txt w formacie HDFS z następującą zawartością.

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

Mamy też przykładowy skrypt z nazwą sample_script.pig, w tym samym katalogu HDFS. Ten plik zawiera instrukcje wykonujące operacje i przekształcenia nastudent relacji, jak pokazano poniżej.

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;
  • Pierwsza instrukcja skryptu załaduje dane z pliku o nazwie student_details.txt jako nazwanej relacji student.

  • Druga instrukcja skryptu uporządkuje krotki relacji w porządku malejącym, na podstawie wieku i zapisze ją jako student_order.

  • Trzecie oświadczenie przechowuje przetwarzane dane student_order daje w wyniku oddzielną tabelę o nazwie student_order_table.

  • Czwarta instrukcja skryptu będzie przechowywać pierwsze cztery krotki student_order tak jak student_limit.

  • Wreszcie piąta instrukcja zrzuci zawartość relacji student_limit.

Wykonajmy teraz sample_script.pig jak pokazano niżej.

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

Teraz sprawdź katalog wyjściowy (hdfs: user / tmp / hive) pod kątem danych wyjściowych (part_0000, part_0001).