Để trả lời bạn Câu hỏi:
Đối với Bảng bên ngoài, Hive lưu trữ dữ liệu trong VỊ TRÍ được chỉ định trong quá trình tạo bảng (thường không nằm trong thư mục kho). Nếu bảng bên ngoài bị xóa, thì siêu dữ liệu bảng sẽ bị xóa nhưng không xóa dữ liệu.
Đối với bảng Internal, Hive lưu trữ dữ liệu vào thư mục kho của nó. Nếu bảng bị xóa thì cả siêu dữ liệu bảng và dữ liệu sẽ bị xóa.
Cho bạn tham khảo,
Sự khác biệt giữa bảng Nội bộ và Bảng bên ngoài:
Đối với bảng bên ngoài -
Bảng bên ngoài lưu trữ các tệp trên máy chủ HDFS nhưng các bảng hoàn toàn không được liên kết với tệp nguồn.
Nếu bạn xóa một bảng bên ngoài, tệp vẫn còn trên máy chủ HDFS.
Ví dụ: nếu bạn tạo một bảng bên ngoài có tên “table_test” trong HIVE bằng HIVE-QL và liên kết bảng với tệp “tệp” , thì việc xóa “table_test” khỏi HIVE sẽ không xóa “tệp” khỏi HDFS .
Các tệp bảng bên ngoài có thể truy cập được đối với bất kỳ ai có quyền truy cập vào cấu trúc tệp HDFS và do đó bảo mật cần được quản lý ở cấp tệp / thư mục HDFS.
Dữ liệu siêu dữ liệu được duy trì trên nút chính và việc xóa bảng bên ngoài khỏi HIVE chỉ xóa siêu dữ liệu chứ không phải dữ liệu / tệp.
Đối với bảng nội bộ-
- Được lưu trữ trong một thư mục dựa trên cài đặt trong
hive.metastore.warehouse.dir
,
theo mặc định, các bảng nội bộ được lưu trữ trong thư mục sau “/ user / hive / kho”, bạn có thể thay đổi nó bằng cách cập nhật vị trí trong tệp cấu hình.
- Xóa bảng sẽ xóa siêu dữ liệu và dữ liệu từ nút chính và HDFS tương ứng.
- Bảo mật tệp bảng nội bộ chỉ được kiểm soát thông qua HIVE. Bảo mật cần được quản lý trong HIVE, có thể là ở cấp giản đồ (tùy thuộc vào tổ chức).
Hive có thể có các bảng bên trong hoặc bên ngoài, đây là lựa chọn ảnh hưởng đến cách dữ liệu được tải, kiểm soát và quản lý.
Sử dụng bảng BÊN NGOÀI khi:
- Các dữ liệu cũng được sử dụng bên ngoài của Hive . Ví dụ: các tệp dữ liệu được đọc và xử lý bởi một chương trình hiện có không khóa tệp.
- Dữ liệu cần được duy trì ở vị trí cơ bản ngay cả sau khi BẢNG HIỆU QUẢ. Điều này có thể áp dụng nếu bạn đang trỏ nhiều lược đồ (bảng hoặc dạng xem) vào một tập dữ liệu duy nhất hoặc nếu bạn đang lặp qua nhiều lược đồ có thể có.
- Hive không nên sở hữu dữ liệu và cài đặt kiểm soát, thư mục, v.v. , bạn có thể có một chương trình hoặc quy trình khác sẽ thực hiện những điều đó.
- Bạn không tạo bảng dựa trên bảng hiện có (AS SELECT).
Sử dụng bảng NỘI BỘ khi:
- Các dữ liệu chỉ là tạm thời .
- Bạn muốn Hive quản lý hoàn toàn vòng đời của bảng và dữ liệu .
Nguồn:
HDInsight: Giới thiệu bảng bên trong và bên ngoài Hive
Bảng bên trong và bên ngoài trong Hadoop- HIVE