2012-02-28 28 views
18

tôi đã tạo ra một Bảng Hive thông qua một phiên tương tác đàn hồi MapReduce và dân cư nó từ một tập tin CSV như thế này:Xuất khẩu Hive Bảng để một xô S3

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; 

bây giờ tôi muốn để lưu trữ các bảng Hive trong một Thùng S3 sao cho bảng được giữ nguyên khi tôi chấm dứt thể hiện MapReduce.

Có ai biết cách thực hiện việc này không?

Trả lời

20

Có bạn phải xuất khẩu và nhập dữ liệu của bạn khi bắt đầu và kết thúc của phiên hive của bạn

Để làm điều này bạn cần phải tạo ra một bảng được ánh xạ lên S3 xô và thư mục

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/'; 

Chèn dữ liệu vào bảng s3 và khi chèn xong thư mục sẽ có tệp csv

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

Bảng của bạn hiện được bảo quản và khi bạn tạo một tổ chức mới có thể nhập lại dữ liệu của bạn

Bảng của bạn có thể được lưu trữ ở một vài định dạng khác nhau tùy thuộc vào nơi bạn muốn sử dụng.

17

Trên Query cần phải sử dụng từ khoá EXTERNAL, tức là:

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; 

Một thay thế khác là sử dụng các truy vấn

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

bảng được lưu trữ trong thư mục với delimiters Hive mặc định S3.

+0

Điều này không sao chép tiêu đề. là có một cách để sao chép tiêu đề cũng? –

0

Nếu bạn có thể truy cập vào giao diện điều khiển AWS và có "Access Key Id" và "Secret Access Key" cho tài khoản

Bạn có thể thử loại này quá ..

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'; 

Bây giờ chèn dữ liệu như khác đã nêu ở trên. .

INSERT OVERWRITE TABLE csvexport select id, time, log from csvimport; 
Các vấn đề liên quan