2012-11-29 28 views
5

Khi bạn tạo một bảng bên ngoài trong Hive (trên Hadoop) với một vị trí nguồn Amazon S3 là dữ liệu chuyển giao cho các Hadoop HDFS địa phương về:Khi bạn tạo một bảng bên ngoài trong Hive với một vị trí S3 là dữ liệu được chuyển?

  • tạo bảng bên ngoài
  • khi cần phải nắm vững (công việc MR) là chạy trên bảng bên ngoài
  • không bao giờ (không bao giờ chuyển dữ liệu) và công việc MR đọc dữ liệu S3.

Chi phí phát sinh ở đây cho S3 là gì? Có một chi phí duy nhất cho việc chuyển dữ liệu sang HDFS hay không có chi phí chuyển dữ liệu nhưng khi công việc MapReduce do Hive tạo ra chạy trên bảng bên ngoài này, chi phí đọc được phát sinh.

Một ví dụ định nghĩa bảng bên ngoài sẽ là:

CREATE EXTERNAL TABLE mydata (key STRING, value INT) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '=' 
LOCATION 's3n://mys3bucket/'; 
+0

(giả sử bạn có nghĩa là chi phí tài chính) Tôi không nghĩ rằng bạn bị tính phí cho việc chuyển giữa S3 và EC2 trong cùng một khu vực AWS http://aws.amazon.com/s3/pricing/ –

Trả lời

4

Nhiệm vụ bản đồ sẽ đọc dữ liệu trực tiếp từ S3. Giữa các bước Bản đồ và Giảm, dữ liệu sẽ được ghi vào hệ thống tệp cục bộ và giữa các công việc tạo bản đồ (trong các truy vấn yêu cầu nhiều công việc), dữ liệu tạm thời sẽ được ghi vào HDFS.

Nếu bạn lo ngại về chi phí đọc S3, bạn có thể tạo bảng khác được lưu trữ trên HDFS và thực hiện sao chép một lần từ bảng S3 sang bảng HDFS.

2

Dữ liệu được chuyển giao cho các nút hadoop của bạn khi truy vấn (MR Jobs) truy cập dữ liệu.
Tạo bảng bên ngoài chỉ thay đổi siêu dữ liệu Hive và không bao giờ di chuyển dữ liệu thực.

Các vấn đề liên quan