Apache Tajo - Quản lý bảng

Bảng là một dạng xem logic của một nguồn dữ liệu. Nó bao gồm một lược đồ logic, các phân vùng, URL và các thuộc tính khác nhau. Một bảng Tajo có thể là một thư mục trong HDFS, một tệp duy nhất, một bảng HBase hoặc một bảng RDBMS.

Tajo hỗ trợ hai loại bảng sau:

  • bảng bên ngoài
  • bảng nội bộ

Bảng bên ngoài

Bảng bên ngoài cần thuộc tính vị trí khi bảng được tạo. Ví dụ: nếu dữ liệu của bạn đã ở đó dưới dạng tệp Văn bản / JSON hoặc bảng HBase, bạn có thể đăng ký nó dưới dạng bảng bên ngoài Tajo.

Truy vấn sau đây là một ví dụ về tạo bảng bên ngoài.

create external table sample(col1 int,col2 text,col3 int) location ‘hdfs://path/to/table';

Đây,

  • External keyword- Điều này được sử dụng để tạo một bảng bên ngoài. Điều này giúp tạo một bảng ở vị trí được chỉ định.

  • Mẫu đề cập đến tên bảng.

  • Location- Nó là thư mục cho HDFS, Amazon S3, HBase hoặc hệ thống tệp cục bộ. Để gán thuộc tính vị trí cho các thư mục, hãy sử dụng các ví dụ về URI bên dưới:

    • HDFS - hdfs: // localhost: port / path / to / table

    • Amazon S3 - s3: // bucket-name / table

    • local file system - tệp: /// đường dẫn / đến / bảng

    • Openstack Swift - swift: // bucket-name / table

Thuộc tính bảng

Một bảng bên ngoài có các thuộc tính sau:

  • TimeZone - Người dùng có thể chỉ định múi giờ để đọc hoặc ghi bảng.

  • Compression format- Được sử dụng để làm cho kích thước dữ liệu nhỏ gọn. Ví dụ: tệp văn bản / json sử dụngcompression.codec bất động sản.

Bảng nội bộ

Bảng Internal còn được gọi là Managed Table. Nó được tạo ở một vị trí vật lý được xác định trước được gọi là Tablespace.

Cú pháp

create table table1(col1 int,col2 text);

Theo mặc định, Tajo sử dụng “tajo.warehouse.directory” nằm trong “conf / tajo-site.xml”. Để chỉ định vị trí mới cho bảng, bạn có thể sử dụng cấu hình Vùng bảng.

Không gian bàn

Không gian bảng được sử dụng để xác định các vị trí trong hệ thống lưu trữ. Nó chỉ được hỗ trợ cho các bảng nội bộ. Bạn có thể truy cập các vùng bảng theo tên của chúng. Mỗi vùng bảng có thể sử dụng một kiểu lưu trữ khác nhau. Nếu bạn không chỉ định không gian bảng thì Tajo sử dụng không gian bảng mặc định trong thư mục gốc.

Cấu hình vùng bảng

Bạn có “conf/tajo-site.xml.template”trong Tajo. Sao chép tệp và đổi tên nó thành“storagesite.json”. Tệp này sẽ hoạt động như một cấu hình cho Tablespaces. Các định dạng dữ liệu Tajo sử dụng cấu hình sau:

Cấu hình HDFS

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         "uri": “hdfs://localhost:9000/path/to/Tajo"  
      } 
   } 
}

Cấu hình HBase

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         "uri": “hbase:zk://quorum1:port,quorum2:port/"  
      } 
   } 
}

Cấu hình tệp văn bản

$ vi conf/storage-site.json { 
   "spaces": {  
      "${tablespace_name}": {  
         “uri”: “hdfs://localhost:9000/path/to/Tajo” 
      } 
   } 
}

Tạo vùng bảng

Bản ghi bảng nội bộ của Tajo chỉ có thể được truy cập từ một bảng khác. Bạn có thể cấu hình nó bằng không gian bảng.

Cú pháp

CREATE TABLE [IF NOT EXISTS] <table_name> [(column_list)] [TABLESPACE tablespace_name] 
[using <storage_type> [with (<key> = <value>, ...)]] [AS <select_statement>]

Đây,

  • IF NOT EXISTS - Điều này tránh được lỗi nếu bảng tương tự chưa được tạo.

  • TABLESPACE - Mệnh đề này dùng để gán tên vùng bảng.

  • Storage type - Dữ liệu Tajo hỗ trợ các định dạng như văn bản, JSON, HBase, Parquet, Sequencefile và ORC.

  • AS select statement - Chọn bản ghi từ bảng khác.

Định cấu hình vùng bảng

Khởi động các dịch vụ Hadoop của bạn và mở tệp “conf/storage-site.json”, sau đó thêm các thay đổi sau:

$ vi conf/storage-site.json { 
   "spaces": {  
      “space1”: {  
         "uri": “hdfs://localhost:9000/path/to/Tajo" 
      } 
   } 
}

Ở đây, Tajo sẽ đề cập đến dữ liệu từ vị trí HDFS và space1là tên vùng bảng. Nếu bạn không khởi động dịch vụ Hadoop, bạn không thể đăng ký vùng bảng.

Truy vấn

default> create table table1(num1 int,num2 text,num3 float) tablespace space1;

Truy vấn trên tạo một bảng có tên “table1” và “space1” đề cập đến tên vùng bảng.

Định dạng dữ liệu

Tajo hỗ trợ các định dạng dữ liệu. Chúng ta hãy xem xét chi tiết từng định dạng một.

Bản văn

Tệp văn bản thuần túy của các giá trị được phân tách bằng ký tự đại diện cho tập dữ liệu dạng bảng bao gồm các hàng và cột. Mỗi hàng là một dòng văn bản thuần túy.

Tạo bảng

default> create external table customer(id int,name text,address text,age int) 
   using text with('text.delimiter'=',') location ‘file:/Users/workspace/Tajo/customers.csv’;

Đây, “customers.csv” tệp đề cập đến tệp giá trị được phân tách bằng dấu phẩy nằm trong thư mục cài đặt Tajo.

Để tạo bảng nội bộ bằng định dạng văn bản, hãy sử dụng truy vấn sau:

default> create table customer(id int,name text,address text,age int) using text;

Trong truy vấn trên, bạn chưa gán bất kỳ vùng bảng nào nên nó sẽ lấy không gian bảng mặc định của Tajo.

Tính chất

Định dạng tệp văn bản có các thuộc tính sau:

  • text.delimiter- Đây là một ký tự phân cách. Mặc định là '|'.

  • compression.codec- Đây là một định dạng nén. Theo mặc định, nó bị tắt. bạn có thể thay đổi cài đặt bằng cách sử dụng thuật toán được chỉ định.

  • timezone - Bảng dùng để đọc hoặc viết.

  • text.error-tolerance.max-num - Số mức dung sai lớn nhất.

  • text.skip.headerlines - Số dòng tiêu đề mỗi dòng bị bỏ qua.

  • text.serde - Đây là thuộc tính tuần tự hóa.

JSON

Apache Tajo hỗ trợ định dạng JSON để truy vấn dữ liệu. Tajo coi một đối tượng JSON là bản ghi SQL. Một đối tượng tương đương với một hàng trong bảng Tajo. Hãy xem xét “array.json” như sau:

$ hdfs dfs -cat /json/array.json { 
   "num1" : 10, 
   "num2" : "simple json array", 
   "num3" : 50.5 
}

Sau khi bạn tạo tệp này, hãy chuyển sang trình bao Tajo và nhập truy vấn sau để tạo bảng bằng định dạng JSON.

Truy vấn

default> create external table sample (num1 int,num2 text,num3 float) 
   using json location ‘json/array.json’;

Luôn nhớ rằng dữ liệu tệp phải khớp với lược đồ bảng. Nếu không, bạn có thể bỏ qua tên cột và sử dụng * không yêu cầu danh sách cột.

Để tạo một bảng nội bộ, hãy sử dụng truy vấn sau:

default> create table sample (num1 int,num2 text,num3 float) using json;

Sàn gỗ

Sàn gỗ là một định dạng lưu trữ dạng cột. Tajo sử dụng định dạng Parquet để truy cập dễ dàng, nhanh chóng và hiệu quả.

Tạo bảng

Truy vấn sau đây là một ví dụ để tạo bảng:

CREATE TABLE parquet (num1 int,num2 text,num3 float) USING PARQUET;

Định dạng tệp sàn có các thuộc tính sau:

  • parquet.block.size - kích thước của một nhóm hàng được lưu vào bộ nhớ đệm.

  • parquet.page.size - Kích thước trang là để nén.

  • parquet.compression - Thuật toán nén được sử dụng để nén các trang.

  • parquet.enable.dictionary - Giá trị boolean là bật / tắt mã hóa từ điển.

RCFile

RCFile là File Columnar Record. Nó bao gồm các cặp khóa / giá trị nhị phân.

Tạo bảng

Truy vấn sau đây là một ví dụ để tạo bảng:

CREATE TABLE Record(num1 int,num2 text,num3 float) USING RCFILE;

RCFile có các thuộc tính sau:

  • rcfile.serde - lớp deserializer tùy chỉnh.

  • compression.codec - thuật toán nén.

  • rcfile.null - Kí tự NULL.

SequenceFile

SequenceFile là một định dạng tệp cơ bản trong Hadoop bao gồm các cặp khóa / giá trị.

Tạo bảng

Truy vấn sau đây là một ví dụ để tạo bảng:

CREATE TABLE seq(num1 int,num2 text,num3 float) USING sequencefile;

Tệp trình tự này có khả năng tương thích Hive. Điều này có thể được viết bằng Hive là,

CREATE TABLE table1 (id int, name string, score float, type string) 
STORED AS sequencefile;

ORC

ORC (Cột hàng được tối ưu hóa) là một định dạng lưu trữ cột từ Hive.

Tạo bảng

Truy vấn sau đây là một ví dụ để tạo bảng:

CREATE TABLE optimized(num1 int,num2 text,num3 float) USING ORC;

Định dạng ORC có các thuộc tính sau:

  • orc.max.merge.distance - Tập tin ORC được đọc, nó sẽ hợp nhất khi khoảng cách thấp hơn.

  • orc.stripe.size - Đây là kích thước của mỗi sọc.

  • orc.buffer.size - Mặc định là 256KB.

  • orc.rowindex.stride - Đây là chỉ số ORC sải bước theo số hàng.