Hcatalog-input-output-format
HCatalog-入力出力フォーマット
HCatInputFormat
Sr.No. | Method Name & Description |
---|---|
1 |
public static HCatInputFormat setInput(Job job, String dbName, String tableName)throws IOException ジョブに使用する入力を設定します。 指定された入力仕様でメタストアを照会し、MapReduceタスクのジョブ構成に一致するパーティションをシリアル化します。 |
2 |
public static HCatInputFormat setInput(Configuration conf, String dbName, String tableName) throws IOException ジョブに使用する入力を設定します。 指定された入力仕様でメタストアを照会し、MapReduceタスクのジョブ構成に一致するパーティションをシリアル化します。 |
3 |
public HCatInputFormat setFilter(String filter)throws IOException 入力テーブルにフィルターを設定します。 |
4 |
public HCatInputFormat setProperties(Properties properties) throws IOException 入力形式のプロパティを設定します。 |
setInput
setOutputSchema
getTableSchema
HCatOutputFormat
HCatOutputFormatはMapReduceジョブで使用され、HCatalog管理のテーブルにデータを書き込みます。 HCatOutputFormatは、テーブルにデータを書き込むためのHadoop 0.20 MapReduce APIを公開します。 MapReduceジョブがHCatOutputFormatを使用して出力を書き込む場合、テーブルに設定されたデフォルトのOutputFormatが使用され、ジョブの完了後に新しいパーティションがテーブルに公開されます。
Sr.No. | Method Name & Description |
---|---|
1 |
public static void setOutput (Configuration conf, Credentials credentials, OutputJobInfo outputJobInfo) throws IOException ジョブについて書き込む出力に関する情報を設定します。 メタデータサーバーに照会して、テーブルに使用するStorageHandlerを見つけます。 パーティションが既に公開されている場合、エラーがスローされます。 |
2 |
public static void setSchema (Configuration conf, HCatSchema schema) throws IOException パーティションに書き出されるデータのスキーマを設定します。 テーブルスキーマは、これが呼び出されない場合、デフォルトでパーティションに使用されます。 |
3 |
public RecordWriter <WritableComparable<?>, HCatRecord > getRecordWriter (TaskAttemptContext context)throws IOException, InterruptedException ジョブのレコードライターを取得します。 StorageHandlerのデフォルトのOutputFormatを使用して、レコードライターを取得します。 |
4 |
public OutputCommitter getOutputCommitter (TaskAttemptContext context) throws IOException, InterruptedException この出力形式の出力コミッターを取得します。 出力が正しくコミットされるようにします。 |
- setOutput
- setSchema
- getTableSchema
HCatOutputFormatの最初の呼び出しは setOutput でなければなりません。他の呼び出しは、出力形式が初期化されていないことを示す例外をスローします。
書き出されるデータのスキーマは、 setSchema メソッドによって指定されます。 書き込むデータのスキーマを提供して、このメソッドを呼び出す必要があります。 データのスキーマがテーブルスキーマと同じ場合、* HCatOutputFormat.getTableSchema()を使用してテーブルスキーマを取得し、それを setSchema()*に渡すことができます。
例
次のMapReduceプログラムは、2番目の列(「列1」)に整数があると見なされる1つのテーブルからデータを読み取り、検出した各個別値のインスタンス数をカウントします。 つまり、 "* select col1、count(*)from $ table group by col1; *"と同等です。
たとえば、2番目の列の値が\ {1、1、1、3、3、5}である場合、プログラムは値とカウントの次の出力を生成します-
私たちは今プログラムコードを見てみましょう-
上記のプログラムをコンパイルする前に、いくつかの jar をダウンロードし、それらをこのアプリケーションの classpath に追加する必要があります。 すべてのHive jarおよびHCatalog jar(HCatalog-core-0.5.0.jar、hive-metastore-0.10.0.jar、libthrift-0.7.0.jar、hive-exec-0.10.0.jar、 libfb303-0.7.0.jar、jdo2-api-2.3-ec.jar、slf4j-api-1.6.1.jar)。
次のコマンドを使用して、これらの jar ファイルを local から HDFS にコピーし、 classpath に追加します。
次のコマンドを使用して、指定されたプログラムをコンパイルおよび実行します。
次に、出力(part_0000、part_0001)の出力ディレクトリ(hdfs:user/tmp/hive)を確認します。