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インスタンスを終了するとテーブルが保持されるようにします。
誰でもこれを行う方法を知っていますか?
はい、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インスタンスを作成するときにデータを再インポートできます
テーブルは、使用する場所に応じて、いくつかの異なる形式で保存できます。
上記のクエリでは、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ディレクトリに格納されます。
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;