web-dev-qa-db-ja.com

HiveテーブルをS3バケットにエクスポートする

Elastic MapReduceインタラクティブセッションを介してHiveテーブルを作成し、CSVファイルから次のように入力しました。

CREATE TABLE csvimport(id BIGINT, time STRING, log STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t';

LOAD DATA LOCAL INPATH '/home/hadoop/file.csv' OVERWRITE INTO TABLE csvimport;

ここで、S3バケットにHiveテーブルを保存して、MapReduceインスタンスを終了するとテーブルが保持されるようにします。

誰でもこれを行う方法を知っていますか?

20
seedhead

はい、Hiveセッションの開始時と終了時にデータをエクスポートおよびインポートする必要があります

これを行うには、S3バケットとディレクトリにマップされるテーブルを作成する必要があります

CREATE TABLE csvexport (
  id BIGINT, time STRING, log STRING
  ) 
 row format delimited fields terminated by ',' 
 lines terminated by '\n' 
 STORED AS TEXTFILE
 LOCATION 's3n://bucket/directory/';

S3テーブルにデータを挿入します。挿入が完了すると、ディレクトリにcsvファイルが作成されます

 INSERT OVERWRITE TABLE csvexport 
 select id, time, log
 from csvimport;

これでテーブルが保持され、新しいHiveインスタンスを作成するときにデータを再インポートできます

テーブルは、使用する場所に応じて、いくつかの異なる形式で保存できます。

22

上記のクエリでは、EXTERNALキーワードを使用する必要があります。

CREATE EXTERNAL TABLE csvexport ( id BIGINT, time STRING, log STRING ) 
row format delimited fields terminated by ',' lines terminated by '\n' 
STORED AS TEXTFILE LOCATION 's3n://bucket/directory/';
INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport;

別の選択肢は、クエリを使用することです

INSERT OVERWRITE DIRECTORY 's3n://bucket/directory/'  select id, time, log from csvimport;

テーブルは、Hiveのデフォルトの区切り文字でS3ディレクトリに格納されます。

18
Thejas

Awsコンソールにアクセスでき、「Access Key Id "および" Secret Access Key "あなたのアカウント

あなたもこれを試すことができます。

CREATE TABLE csvexport(id BIGINT, time STRING, log STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LOCATION 's3n://"access id":"secret key"@bucket/folder/path';

上記のようにデータを挿入します。

INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport;
0
hadooper