Hcatalog-loader-and-storer
HCatalog-ローダーとストアー
この章をよりよく理解するには、Apache Pigスクリプトに関する知識が必要です。 詳細については、リンク:/apache_pig/index [Apache Pig]チュートリアルをご覧ください。
HCatloader
HCatLoaderは、HCatalogが管理するテーブルからデータを読み取るためにPigスクリプトとともに使用されます。 次の構文を使用して、HCatloaderを使用してHDFSにデータをロードします。
テーブル名を一重引用符で指定する必要があります: LOAD 'tablename' 。 デフォルト以外のデータベースを使用している場合、入力を ' dbname.tablename' として指定する必要があります。
Hiveメタストアを使用すると、データベースを指定せずにテーブルを作成できます。 この方法でテーブルを作成した場合、データベース名は 'default' であり、HCatLoaderのテーブルを指定するときは不要です。
次の表には、HCatloaderクラスの重要なメソッドと説明が含まれています。
Sr.No. | Method Name & Description |
---|---|
1 |
public InputFormat<?,?> getInputFormat()throws IOException HCatloaderクラスを使用して、読み込みデータの入力形式を読み取ります。 |
2 |
public String relativeToAbsolutePath(String location, Path curDir) throws IOException
|
3 |
public void setLocation(String location, Job job) throws IOException ジョブを実行できる場所を設定します。 |
4 |
public Tuple getNext() throws IOException ループから現在のタプル(キー*および*値)を返します。 |
HCatStorer
HCatStorerはPigスクリプトとともに使用され、HCatalog管理のテーブルにデータを書き込みます。 格納操作には次の構文を使用します。
テーブル名を一重引用符で指定する必要があります: LOAD 'tablename' 。 Pigスクリプトを実行する前に、データベースとテーブルの両方を作成する必要があります。 デフォルト以外のデータベースを使用している場合、入力を 'dbname.tablename' として指定する必要があります。
Hiveメタストアを使用すると、データベースを指定せずにテーブルを作成できます。 この方法でテーブルを作成した場合、データベース名は 'default' であり、 store ステートメントでデータベース名を指定する必要はありません。
次の表には、HCatStorerクラスの重要なメソッドと説明が含まれています。
Sr.No. | Method Name & Description |
---|---|
1 |
public OutputFormat getOutputFormat() throws IOException HCatStorerクラスを使用して、保存されたデータの出力形式を読み取ります。 |
2 |
public void setStoreLocation (String location, Job job) throws IOException この store アプリケーションを実行する場所を設定します。 |
3 |
public void storeSchema (ResourceSchema schema, String arg1, Job job) throws IOException スキーマを保存します。 |
4 |
public void prepareToWrite (RecordWriter writer) throws IOException RecordWriterを使用して特定のファイルにデータを書き込むのに役立ちます。 |
5 |
public void putNext (Tuple tuple) throws IOException タプルデータをファイルに書き込みます。 |
HCatalogでPigを実行する
PigはHCatalog jarを自動的にピックアップしません。 必要なjarを取り込むには、Pigコマンドでフラグを使用するか、以下で説明するように環境変数 PIG_CLASSPATH および PIG_OPTS を設定します。
HCatalogで作業するための適切なjarファイルを取り込むには、単に次のフラグを含めます-
実行のためのCLASSPATHの設定
以下のCLASSPATH設定を使用して、HCatalogをApache Pigと同期します。
例
次の内容のファイル student_details.txt がHDFSにあると仮定します。
同じHDFSディレクトリに sample_script.pig という名前のサンプルスクリプトもあります。 このファイルには、以下に示すように、 student 関係で操作と変換を実行するステートメントが含まれています。
- スクリプトの最初のステートメントは、 student_details.txt という名前のファイルのデータを student という名前の関係としてロードします。
- スクリプトの2番目のステートメントは、関係のタプルを年齢に基づいて降順に並べ、 student_order として保存します。
- 3番目のステートメントは、処理されたデータ student_order を保存し、 student_order_table という名前の別のテーブルを作成します。
- スクリプトの4番目のステートメントは、 student_order の最初の4つのタプルを student_limit として保存します。
- 最後に、5番目のステートメントはリレーション student_limit の内容をダンプします。
次に示すように、 sample_script.pig を実行します。
次に、出力(part_0000、part_0001)の出力ディレクトリ(hdfs:user/tmp/hive)を確認します。