2017-01-22 26 views
2

1つのhdfsファイルschema.avscにハイブテーブルスキーマが格納されています。 同じスキーマのハイブテーブルを作成し、HDFSファイルシステムにデータが格納されている別のhdfsパスからデータをダンプしたいとします。.avscファイルに格納されているテーブルスキーマからハイブテーブルを作成

1:テーブルを作成するにはどうすればよいですか? 2:hdfsファイルに格納されたデータを作成したテーブルにダンプするにはどうしたらいいですか?

答えて

2

テーブルを作成するにはどうすればよいですか?

AvroSerDeのApache Hiveドキュメントは、ファイルに格納されたAvroスキーマに基づいてテーブルを作成するための構文を示しています。便宜上、ここで例を繰り返します:

CREATE TABLE kst 
    PARTITIONED BY (ds string) 
    ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.avro.AvroSerDe' 
    STORED AS INPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' 
    OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' 
    TBLPROPERTIES (
    'avro.schema.url'='http://schema_provider/kst.avsc'); 

この例では、Webサーバーからスキーマファイルを取り出します。ドキュメントには、特定のニーズに応じて、ローカルファイルから取り出すなどの他のオプションも表示されます。

AvroSerDeのドキュメントページ全体を読むことをお勧めします。 AvroでHiveを最大限に活用する方法については、多くの有益な情報があります。

hdfsファイルに保存されたデータを作成したテーブルにダンプするにはどうすればよいですか?

既存のHDFSファイルを参照する外部テーブルを定義できます。 External Tablesのドキュメントページに構文が表示されます。例を繰り返す:

CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT, 
    page_url STRING, referrer_url STRING, 
    ip STRING COMMENT 'IP Address of the User', 
    country STRING COMMENT 'country of origination') 
COMMENT 'This is the staging page view table' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054' 
STORED AS TEXTFILE 
LOCATION '<hdfs_location>'; 

外部テーブルを定義したら、その後、外部表から読み取って、アブロテーブルに書き込みINSERT-SELECTクエリを使用することができます。 Inserting data into Hive Tables from queriesのドキュメントでは、INSERT-SELECT構文について説明しています。例:

FROM page_view_stg pvs 
INSERT OVERWRITE TABLE page_view PARTITION(dt='2008-06-08', country) 
     SELECT pvs.viewTime, pvs.userid, pvs.page_url, pvs.referrer_url, null, null, pvs.ip, pvs.cnt 
関連する問題