Hcatalog-create-table
HCatalog-テーブルの作成
この章では、テーブルの作成方法とデータの挿入方法について説明します。 HCatalogでテーブルを作成する規則は、Hiveを使用してテーブルを作成することに非常に似ています。
テーブルステートメントの作成
Create Tableは、HCatalogを使用してHiveメタストアにテーブルを作成するために使用されるステートメントです。 その構文と例は次のとおりです-
構文
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[ROW FORMAT row_format]
[STORED AS file_format]
例
*CREATE TABLE* ステートメントを使用して *employee* という名前のテーブルを作成する必要があると仮定します。 次の表は、 *employee* テーブルのフィールドとそのデータ型を示しています-
Sr.No | Field Name | Data Type |
---|---|---|
1 | Eid | int |
2 | Name | String |
3 | Salary | Float |
4 | Designation | string |
以下のデータは、 Comment 、 Field terminator 、 Lines terminator 、 Stored File type などの行形式フィールドなどのサポートされているフィールドを定義しています。
COMMENT ‘Employee details’
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED IN TEXT FILE
次のクエリは、上記のデータを使用して employee という名前のテーブルを作成します。
./hcat –e "CREATE TABLE IF NOT EXISTS employee ( eid int, name String,
salary String, destination String) \
COMMENT 'Employee details' \
ROW FORMAT DELIMITED \
FIELDS TERMINATED BY ‘\t’ \
LINES TERMINATED BY ‘\n’ \
STORED AS TEXTFILE;"
オプション IF NOT EXISTS を追加すると、HCatalogは、テーブルが既に存在する場合にステートメントを無視します。
テーブルの作成が成功すると、次の応答が表示されます-
OK
Time taken: 5.905 seconds
データの読み込みステートメント
一般に、SQLでテーブルを作成した後、Insertステートメントを使用してデータを挿入できます。 ただし、HCatalogでは、LOAD DATAステートメントを使用してデータを挿入します。
HCatalogにデータを挿入する際、LOAD DATAを使用してバルクレコードを保存することをお勧めします。 データをロードするには2つの方法があります。1つは*ローカルファイルシステム*から、もう1つは* Hadoopファイルシステム*からです。
構文
LOAD DATAの構文は次のとおりです-
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
- LOCALは、ローカルパスを指定する識別子です。 オプションです。
- OVERWRITEは、テーブル内のデータを上書きするためのオプションです。
- PARTITIONはオプションです。
例
次のデータをテーブルに挿入します。 これは、 /home/user ディレクトリにある sample.txt という名前のテキストファイルです。
1201 Gopal 45000 Technical manager
1202 Manisha 45000 Proof reader
1203 Masthanvali 40000 Technical writer
1204 Kiran 40000 Hr Admin
1205 Kranthi 30000 Op Admin
次のクエリは、指定されたテキストをテーブルにロードします。
./hcat –e "LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;"
ダウンロードが成功すると、次の応答が表示されます-
OK
Time taken: 15.905 seconds