Apache Tajo - Manajemen Tabel

Tabel adalah tampilan logis dari satu sumber data. Ini terdiri dari skema logis, partisi, URL, dan berbagai properti. Tabel Tajo dapat berupa direktori dalam HDFS, satu file, satu tabel HBase, atau tabel RDBMS.

Tajo mendukung dua jenis tabel berikut -

  • tabel eksternal
  • tabel internal

Tabel Eksternal

Tabel eksternal membutuhkan properti lokasi saat tabel dibuat. Misalnya, jika data Anda sudah ada sebagai file Teks / JSON atau tabel HBase, Anda dapat mendaftarkannya sebagai tabel eksternal Tajo.

Kueri berikut adalah contoh pembuatan tabel eksternal.

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

Sini,

  • External keyword- Ini digunakan untuk membuat tabel eksternal. Ini membantu membuat tabel di lokasi yang ditentukan.

  • Sampel mengacu pada nama tabel.

  • Location- Ini adalah direktori untuk HDFS, Amazon S3, HBase atau sistem file lokal. Untuk menetapkan properti lokasi untuk direktori, gunakan contoh URI di bawah ini -

    • HDFS - hdfs: // localhost: port / jalur / ke / tabel

    • Amazon S3 - s3: // nama-keranjang / tabel

    • local file system - file: /// jalur / ke / tabel

    • Openstack Swift - swift: // nama-ember / tabel

Properti Tabel

Tabel eksternal memiliki properti berikut -

  • TimeZone - Pengguna dapat menentukan zona waktu untuk membaca atau menulis tabel.

  • Compression format- Digunakan untuk membuat ukuran data kompak. Misalnya, file teks / json menggunakancompression.codec Properti.

Tabel Internal

Tabel internal juga disebut Managed Table. Itu dibuat di lokasi fisik yang telah ditentukan sebelumnya yang disebut Tablespace.

Sintaksis

create table table1(col1 int,col2 text);

Secara default, Tajo menggunakan "tajo.warehouse.directory" yang terletak di "conf / tajo-site.xml". Untuk menetapkan lokasi baru untuk tabel, Anda dapat menggunakan konfigurasi Tablespace.

Tablespace

Tablespace digunakan untuk menentukan lokasi dalam sistem penyimpanan. Ini hanya didukung untuk tabel internal. Anda dapat mengakses tablespaces dengan namanya. Setiap tablespace dapat menggunakan jenis penyimpanan yang berbeda. Jika Anda tidak menentukan tablespaces, Tajo menggunakan tablespace default di direktori root.

Konfigurasi Tablespace

Kamu punya “conf/tajo-site.xml.template”di Tajo. Salin file dan ganti namanya menjadi“storagesite.json”. File ini akan bertindak sebagai konfigurasi untuk Tablespaces. Format data Tajo menggunakan konfigurasi berikut -

Konfigurasi HDFS

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

Konfigurasi HBase

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

Konfigurasi File Teks

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

Pembuatan Tablespace

Catatan tabel internal Tajo hanya dapat diakses dari tabel lain. Anda dapat mengkonfigurasinya dengan tablespace.

Sintaksis

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

Sini,

  • IF NOT EXISTS - Ini menghindari kesalahan jika tabel yang sama belum dibuat.

  • TABLESPACE - Klausul ini digunakan untuk menetapkan nama tablespace.

  • Storage type - Data Tajo mendukung format seperti teks, JSON, HBase, Parquet, Sequencefile dan ORC.

  • AS select statement - Pilih catatan dari tabel lain.

Konfigurasi Tablespace

Mulai layanan Hadoop Anda dan buka file “conf/storage-site.json”, lalu tambahkan perubahan berikut -

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

Di sini, Tajo akan mengacu pada data dari lokasi HDFS dan space1adalah nama tablespace. Jika Anda tidak memulai layanan Hadoop, Anda tidak dapat mendaftarkan tablespace.

Pertanyaan

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

Kueri di atas membuat tabel bernama "table1" dan "space1" mengacu pada nama tablespace.

Format data

Tajo mendukung format data. Mari kita bahas setiap format satu per satu secara mendetail.

Teks

File teks biasa nilai yang dipisahkan karakter mewakili kumpulan data tabel yang terdiri dari baris dan kolom. Setiap baris adalah baris teks biasa.

Membuat Tabel

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

Sini, “customers.csv” file mengacu pada file nilai dipisahkan koma yang terletak di direktori instalasi Tajo.

Untuk membuat tabel internal menggunakan format teks, gunakan query berikut -

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

Dalam query di atas, Anda belum menetapkan tablespace apa pun sehingga itu akan mengambil tablespace default Tajo.

Properti

Format file teks memiliki properti berikut -

  • text.delimiter- Ini adalah karakter pembatas. Default-nya adalah '|'.

  • compression.codec- Ini adalah format kompresi. Secara default, ini dinonaktifkan. Anda dapat mengubah pengaturan menggunakan algoritma yang ditentukan.

  • timezone - Meja yang digunakan untuk membaca atau menulis.

  • text.error-tolerance.max-num - Jumlah maksimum tingkat toleransi.

  • text.skip.headerlines - Jumlah baris header per dilewati.

  • text.serde - Ini adalah properti serialisasi.

JSON

Apache Tajo mendukung format JSON untuk meminta data. Tajo memperlakukan objek JSON sebagai data SQL. Satu objek sama dengan satu baris dalam tabel Tajo. Mari pertimbangkan "array.json" sebagai berikut -

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

Setelah Anda membuat file ini, alihkan ke shell Tajo dan ketik kueri berikut untuk membuat tabel menggunakan format JSON.

Pertanyaan

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

Ingatlah selalu bahwa data file harus sesuai dengan skema tabel. Jika tidak, Anda bisa menghilangkan nama kolom dan menggunakan * yang tidak memerlukan daftar kolom.

Untuk membuat tabel internal, gunakan query berikut -

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

Parket

Parket adalah format penyimpanan kolumnar. Tajo menggunakan format Parket untuk akses yang mudah, cepat dan efisien.

Pembuatan tabel

Query berikut adalah contoh pembuatan tabel -

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

Format file parket memiliki properti berikut -

  • parquet.block.size - ukuran grup baris yang di-buffer dalam memori.

  • parquet.page.size - Ukuran halaman untuk kompresi.

  • parquet.compression - Algoritma kompresi yang digunakan untuk mengompres halaman.

  • parquet.enable.dictionary - Nilai boolean adalah untuk mengaktifkan / menonaktifkan pengkodean kamus.

RCFile

RCFile adalah File Kolom Rekam. Ini terdiri dari pasangan kunci / nilai biner.

Pembuatan tabel

Query berikut adalah contoh pembuatan tabel -

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

RCFile memiliki properti berikut -

  • rcfile.serde - kelas deserializer khusus.

  • compression.codec - algoritma kompresi.

  • rcfile.null - Karakter NULL.

SequenceFile

SequenceFile adalah format file dasar di Hadoop yang terdiri dari pasangan kunci / nilai.

Pembuatan tabel

Query berikut adalah contoh pembuatan tabel -

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

File urutan ini memiliki kompatibilitas Hive. Ini dapat ditulis di Hive sebagai,

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

ORC

ORC (Optimized Row Columnar) adalah format penyimpanan berbentuk kolom dari Hive.

Pembuatan tabel

Query berikut adalah contoh pembuatan tabel -

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

Format ORC memiliki properti berikut -

  • orc.max.merge.distance - File ORC dibaca, itu menyatu ketika jaraknya lebih rendah.

  • orc.stripe.size - Ini adalah ukuran setiap garis.

  • orc.buffer.size - Standarnya adalah 256KB.

  • orc.rowindex.stride - Ini adalah langkah indeks ORC dalam jumlah baris.