hive
データベースとテーブルステートメントの作成
サーチ…
構文
CREATE [TEMPORARY] [EXTERNAL] TABLE [存在しない場合] [db_name。] table_name
[(col_name data_type [COMMENT col_comment]、...)] [COMMENT table_comment] [PARTSTIONED BY(col_name data_type [COMMENT col_comment]、...)] [CLUSTERED BY(col_name、col_name、...) (注:Hive 0.10.0以降で利用可能)] ON((col_value、col_value、col_value、col_value、col_value、col_value、 ...)、(col_value、col_value、...)、...)[DORECTORIESとして格納されている] [[ROW FORMAT row_format] [STORED AS file_format] | STORED BY 'storage.handler.class.name' [SERDEPROPERTIES(...)]] [ロケーションhdfs_path] [TBLPROPERTIES(property_name = property_value、...)]
[AS select_statement];CREATE [TEMPORARY] [EXTERNAL] TABLE [存在しない場合] [db_name。] table_name LIKE existing_table_or_view_name [LOCATION hdfs_path];
data_type:primitive_type、array_type、map_type、struct_type、union_type
プリミティブ型:TINYINT、SMALLINT、INT、BIGINT、BOOLEAN、FLOAT、DOUBLE、STRING、BINARY、TIMESTAMP、DECIMAL、DECIMAL(精度、位取り)、DATE、VARCHAR、CHAR
array_type:ARRAY <データ型>
map_type:MAP <primitive_type、data_type>
struct_type:STRUCT <col_name:data_type [コメントcol_comment]、...>
union_type:UNIONTYPE <データ型、データ型、...>
char [ESCAPED BY char] [FILLDS TERMINATED BY char [ESCAPED BY char]] [charで終わるコレクションアイテム] [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] [NULL DEFINED AS char]
、SERDE serde_name [SERDEPROPERTIES(プロパティ名=プロパティ値、プロパティ名=プロパティ値、...)]file_format :: SEQUENCEFILE、TEXTFILE、RCFILE、ORC、PARQUET、AVRO、INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
CREATE(データベース|スキーマ)[存在しない場合] database_name [コメントデータベース_コメント] [ロケーションhdfs_path] [WITH DBPROPERTIES(property_name = property_value、...)];
備考
HIVEでテーブルとデータベースを操作するとき。以下の点が有用です。
-
use database;
をuse database;
切り替えることができuse database;
コマンド -
SELECT current_database()
を使用して取得できる現在の作業データベースを知るには、 - create table文に使用されるDDLを表示するには、
SHOW CREATE TABLE tablename
- テーブルのすべての列を表示するには、
DESCRIBE tablename
を使用して、使用されたロケーションserdeやDESCRIBE FORMATTED tablename
などの詳細を表示しDESCRIBE FORMATTED tablename
。 DESCRIBEはDESCと略記することもできます。
テーブルの作成
パーティション付きの管理対象テーブルを作成し、シーケンスファイルとして保存します。ファイル内のデータ形式は、 Ctrl-A (^A)
でフィールド区切りと改行で区切られていると仮定されています。次の表は、Hive構成ファイルhive.metastore.warehouse.dir
hive-site.xml
のキーhive.metastore.warehouse.dir
値に指定されているハイブウェアハウスディレクトリに作成されています。
CREATE TABLE view
(time INT,
id BIGINT,
url STRING,
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE;
パーティションを持つ外部テーブルを作成し、シーケンスファイルとして保存します。ファイル内のデータフォーマットは、 ctrl-A
でフィールド区切りと改行で行区切りにすると仮定しています。下記の表は指定された場所に作成されており、既にデータがある場合に便利です。外部テーブルを使用する利点の1つは、データを削除せずにテーブルを削除できることです。たとえば、テーブルを作成してスキーマが間違っているとわかったら、データを気にせずにテーブルを落として新しいスキーマで再作成することができます。他の利点は、同じファイルに豚のようなツールを使用している場合、テーブルを削除しても引き続き使用することができます。
CREATE EXTERNAL TABLE view
(time INT,
id BIGINT,
url STRING,
referrer_url STRING,
add STRING COMMENT 'IP of the User')
COMMENT 'This is view table'
PARTITIONED BY(date STRING, region STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
STORED AS SEQUENCEFILE
LOCATION '<hdfs_location>';
選択クエリを使用してテーブルを作成し、クエリの結果を入力すると、これらのステートメントはCTAS(テーブルを選択として作成)と呼ばれます 。
CTASには2つの部分があり、SELECT部分はHiveQLでサポートされているSELECT文です。 CTASのCREATE部分は、結果として生成されたスキーマをSELECT部分から取り出し、SerDeや記憶形式などの他の表プロパティを持つターゲット表を作成します。
CTASには次の制限があります。
- ターゲット表は、パーティション表にすることはできません。
- ターゲット表を外部表にすることはできません。
- ターゲットテーブルはリストバケットテーブルにすることはできません。
CREATE TABLE new_key_value_store
ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe"
STORED AS RCFile
AS
SELECT * FROM page_view
SORT BY url, add;
テーブルを作成する:
LIKE形式のCREATE TABLEを使用すると、既存のテーブル定義を(データをコピーせずに)正確にコピーすることができます。 CTASとは対照的に、以下のステートメントは、テーブル名以外のすべての特定のテーブルの定義と完全に一致する新しいテーブルを作成します。新しいテーブルには行は含まれません。
CREATE TABLE empty_page_views
LIKE page_views;
データベースの作成
特定の場所にデータベースを作成する。我々は、データベースの場所を指定するのではなく、ウェアハウスディレクトリに作成します。
CREATE DATABASE IF NOT EXISTS db_name
COMMENT 'TEST DATABASE'
LOCATION /PATH/HDFS/DATABASE/;
ハイブACIDテーブルの作成。
ACIDテーブルはハイブ0.14以降サポートされています。以下の表は、UPDATE / DELETE / INSERTをサポートしています。
hive-site.xmlに必要な構成の変更
hive.support.concurrency = true
hive.enforce.bucketing = true
hive.exec.dynamic.partition.mode = nonstrict
hive.txn.manager =org.apache.hadoop.hive.ql.lockmgr.DbTxnManager
hive.compactor.initiator.on = true
hive.compactor.worker.threads = 1
現時点では、orcファイルのみがサポートされています。
テーブル作成ステートメント。
create table Sample_Table(
col1 Int,
col2 String,
col3 String)
clustered by (col3) into 3 buckets
stored as orc
TBLPROPERTIES ('transactional'='true');
HIVE_HBASE統合
Hive-Hbase統合は、以下のバージョン以降でサポートされています。ハイブ:0.11.0Haase:0.94.2Hadop:0.20.2
CREATE TABLE hbase_hive
(id string,
col1 string,
col2 string,
col3 int)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES
("hbase.columns.mapping" = ":key,cf1:col1,cf1:col2,cf1:col3")
TBLPROPERTIES ("hbase.table.name" = "hive_hbase");
注:第1列はキー列でなければなりません。
既存のテーブルプロパティを使用してテーブルを作成します。
CREATE TABLE new_table_name LIKE existing_table_name;