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.