Apache Tajo - การจัดการโต๊ะ
ตารางคือมุมมองเชิงตรรกะของแหล่งข้อมูลเดียว ประกอบด้วยสคีมาโลจิคัลพาร์ติชัน URL และคุณสมบัติต่างๆ ตาราง Tajo สามารถเป็นไดเร็กทอรีใน HDFS ไฟล์เดียวตาราง HBase หนึ่งตารางหรือตาราง RDBMS
Tajo รองรับตารางสองประเภทต่อไปนี้ -
- ตารางภายนอก
- ตารางภายใน
ตารางภายนอก
ตารางภายนอกต้องการคุณสมบัติตำแหน่งเมื่อสร้างตาราง ตัวอย่างเช่นหากข้อมูลของคุณมีอยู่แล้วเป็นไฟล์ Text / JSON หรือตาราง HBase คุณสามารถลงทะเบียนเป็นตารางภายนอกของ Tajo
แบบสอบถามต่อไปนี้เป็นตัวอย่างของการสร้างตารางภายนอก
create external table sample(col1 int,col2 text,col3 int) location ‘hdfs://path/to/table';
ที่นี่
External keyword- ใช้เพื่อสร้างตารางภายนอก สิ่งนี้ช่วยในการสร้างตารางในตำแหน่งที่ระบุ
ตัวอย่างหมายถึงชื่อตาราง
Location- เป็นไดเร็กทอรีสำหรับ HDFS, Amazon S3, HBase หรือระบบไฟล์ในเครื่อง ในการกำหนดคุณสมบัติตำแหน่งสำหรับไดเร็กทอรีให้ใช้ตัวอย่าง URI ด้านล่าง -
HDFS - hdfs: // localhost: port / path / to / table
Amazon S3 - s3: // ที่เก็บชื่อ / ตาราง
local file system - ไฟล์: /// path / to / table
Openstack Swift - รวดเร็ว: // bucket-name / table
คุณสมบัติของตาราง
ตารางภายนอกมีคุณสมบัติดังต่อไปนี้ -
TimeZone - ผู้ใช้สามารถระบุเขตเวลาสำหรับการอ่านหรือเขียนตาราง
Compression format- ใช้เพื่อทำให้ข้อมูลมีขนาดกะทัดรัด ตัวอย่างเช่นไฟล์ text / json ใช้compression.codec ทรัพย์สิน.
ตารางภายใน
ตารางภายในเรียกอีกอย่างว่าไฟล์ Managed Table. มันถูกสร้างขึ้นในตำแหน่งทางกายภาพที่กำหนดไว้ล่วงหน้าที่เรียกว่า Tablespace
ไวยากรณ์
create table table1(col1 int,col2 text);
ตามค่าเริ่มต้น Tajo จะใช้“ tajo.warehouse.directory” ที่อยู่ใน“ conf / tajo-site.xml” ในการกำหนดตำแหน่งใหม่สำหรับตารางคุณสามารถใช้การกำหนดค่า Tablespace
Tablespace
Tablespace ใช้เพื่อกำหนดตำแหน่งในระบบจัดเก็บข้อมูล รองรับเฉพาะตารางภายในเท่านั้น คุณสามารถเข้าถึงพื้นที่ตารางตามชื่อของพวกเขา แต่ละช้อนโต๊ะสามารถใช้ประเภทการจัดเก็บที่แตกต่างกัน หากคุณไม่ได้ระบุพื้นที่ตาราง Tajo จะใช้พื้นที่ตารางเริ่มต้นในไดเรกทอรีราก
การกำหนดค่า Tablespace
คุณมี “conf/tajo-site.xml.template”ใน Tajo คัดลอกไฟล์และเปลี่ยนชื่อเป็น“storagesite.json”. ไฟล์นี้จะทำหน้าที่เป็นส่วนกำหนดค่าสำหรับ Tablespaces รูปแบบข้อมูล Tajo ใช้การกำหนดค่าต่อไปนี้ -
การกำหนดค่า HDFS
$ vi conf/storage-site.json {
"spaces": {
"${tablespace_name}": {
"uri": “hdfs://localhost:9000/path/to/Tajo"
}
}
}
การกำหนดค่า HBase
$ vi conf/storage-site.json {
"spaces": {
"${tablespace_name}": {
"uri": “hbase:zk://quorum1:port,quorum2:port/"
}
}
}
การกำหนดค่าไฟล์ข้อความ
$ vi conf/storage-site.json {
"spaces": {
"${tablespace_name}": {
“uri”: “hdfs://localhost:9000/path/to/Tajo”
}
}
}
การสร้าง Tablespace
บันทึกตารางภายในของ Tajo สามารถเข้าถึงได้จากตารางอื่นเท่านั้น คุณสามารถกำหนดค่าได้ด้วยพื้นที่ตาราง
ไวยากรณ์
CREATE TABLE [IF NOT EXISTS] <table_name> [(column_list)] [TABLESPACE tablespace_name]
[using <storage_type> [with (<key> = <value>, ...)]] [AS <select_statement>]
ที่นี่
IF NOT EXISTS - หลีกเลี่ยงข้อผิดพลาดหากยังไม่ได้สร้างตารางเดียวกัน
TABLESPACE - ประโยคนี้ใช้เพื่อกำหนดชื่อพื้นที่ตาราง
Storage type - ข้อมูล Tajo รองรับรูปแบบเช่น text, JSON, HBase, Parquet, Sequencefile และ ORC
AS select statement - เลือกบันทึกจากตารางอื่น
กำหนดค่า Tablespace
เริ่มบริการ Hadoop ของคุณและเปิดไฟล์ “conf/storage-site.json”จากนั้นเพิ่มการเปลี่ยนแปลงต่อไปนี้ -
$ vi conf/storage-site.json {
"spaces": {
“space1”: {
"uri": “hdfs://localhost:9000/path/to/Tajo"
}
}
}
ที่นี่ Tajo จะอ้างถึงข้อมูลจากตำแหน่ง HDFS และ space1คือชื่อตาราง หากคุณไม่เริ่มบริการ Hadoop คุณจะลงทะเบียนพื้นที่ตารางไม่ได้
แบบสอบถาม
default> create table table1(num1 int,num2 text,num3 float) tablespace space1;
คำค้นหาด้านบนสร้างตารางชื่อ "table1" และ "space1" หมายถึงชื่อพื้นที่ตาราง
รูปแบบข้อมูล
Tajo รองรับรูปแบบข้อมูล มาดูแต่ละรูปแบบโดยละเอียดทีละรูปแบบ
ข้อความ
ไฟล์ข้อความธรรมดาของค่าที่คั่นด้วยอักขระแสดงถึงชุดข้อมูลแบบตารางที่ประกอบด้วยแถวและคอลัมน์ แต่ละแถวเป็นบรรทัดข้อความธรรมดา
การสร้างตาราง
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’;
ที่นี่ “customers.csv” ไฟล์หมายถึงไฟล์ค่าที่คั่นด้วยเครื่องหมายจุลภาคซึ่งอยู่ในไดเร็กทอรีการติดตั้ง Tajo
ในการสร้างตารางภายในโดยใช้รูปแบบข้อความให้ใช้แบบสอบถามต่อไปนี้ -
default> create table customer(id int,name text,address text,age int) using text;
ในข้อความค้นหาข้างต้นคุณยังไม่ได้กำหนดพื้นที่ตารางใด ๆ ดังนั้นจะใช้พื้นที่ตารางเริ่มต้นของ Tajo
คุณสมบัติ
รูปแบบไฟล์ข้อความมีคุณสมบัติดังต่อไปนี้ -
text.delimiter- นี่คืออักขระตัวคั่น ค่าเริ่มต้นคือ '|'
compression.codec- นี่คือรูปแบบการบีบอัด โดยค่าเริ่มต้นจะถูกปิดใช้งาน คุณสามารถเปลี่ยนการตั้งค่าโดยใช้อัลกอริทึมที่ระบุ
timezone - โต๊ะสำหรับอ่านหนังสือหรือเขียน
text.error-tolerance.max-num - จำนวนระดับความอดทนสูงสุด
text.skip.headerlines - จำนวนบรรทัดส่วนหัวต่อการข้าม
text.serde - นี่คือคุณสมบัติการทำให้เป็นอนุกรม
JSON
Apache Tajo รองรับรูปแบบ JSON สำหรับการสืบค้นข้อมูล Tajo ถือว่าออบเจ็กต์ JSON เป็นบันทึก SQL หนึ่งวัตถุเท่ากับหนึ่งแถวในตาราง Tajo ลองพิจารณา“ array.json” ดังนี้ -
$ hdfs dfs -cat /json/array.json {
"num1" : 10,
"num2" : "simple json array",
"num3" : 50.5
}
หลังจากคุณสร้างไฟล์นี้แล้วให้เปลี่ยนไปใช้เชลล์ Tajo และพิมพ์แบบสอบถามต่อไปนี้เพื่อสร้างตารางโดยใช้รูปแบบ JSON
แบบสอบถาม
default> create external table sample (num1 int,num2 text,num3 float)
using json location ‘json/array.json’;
โปรดจำไว้เสมอว่าข้อมูลไฟล์ต้องตรงกับสคีมาของตาราง มิฉะนั้นคุณสามารถละเว้นชื่อคอลัมน์และใช้ * ซึ่งไม่ต้องการรายการคอลัมน์
ในการสร้างตารางภายในให้ใช้แบบสอบถามต่อไปนี้ -
default> create table sample (num1 int,num2 text,num3 float) using json;
ปาร์เก้
ไม้ปาร์เก้เป็นรูปแบบการจัดเก็บคอลัมน์ Tajo ใช้รูปแบบ Parquet เพื่อการเข้าถึงที่ง่ายรวดเร็วและมีประสิทธิภาพ
การสร้างตาราง
แบบสอบถามต่อไปนี้เป็นตัวอย่างสำหรับการสร้างตาราง -
CREATE TABLE parquet (num1 int,num2 text,num3 float) USING PARQUET;
รูปแบบไฟล์ปาร์เก้มีคุณสมบัติดังต่อไปนี้ -
parquet.block.size - ขนาดของกลุ่มแถวที่ถูกบัฟเฟอร์ในหน่วยความจำ
parquet.page.size - ขนาดหน้าสำหรับการบีบอัด
parquet.compression - อัลกอริทึมการบีบอัดที่ใช้ในการบีบอัดหน้า
parquet.enable.dictionary - ค่าบูลีนคือการเปิด / ปิดการเข้ารหัสพจนานุกรม
RCFile
RCFile คือไฟล์ Record Columnar ประกอบด้วยคู่คีย์ / ค่าไบนารี
การสร้างตาราง
แบบสอบถามต่อไปนี้เป็นตัวอย่างสำหรับการสร้างตาราง -
CREATE TABLE Record(num1 int,num2 text,num3 float) USING RCFILE;
RCFile มีคุณสมบัติดังต่อไปนี้ -
rcfile.serde - คลาส deserializer ที่กำหนดเอง
compression.codec - อัลกอริทึมการบีบอัด
rcfile.null - อักขระ NULL
SequenceFile
SequenceFile เป็นรูปแบบไฟล์พื้นฐานใน Hadoop ซึ่งประกอบด้วยคู่คีย์ / ค่า
การสร้างตาราง
แบบสอบถามต่อไปนี้เป็นตัวอย่างสำหรับการสร้างตาราง -
CREATE TABLE seq(num1 int,num2 text,num3 float) USING sequencefile;
ไฟล์ลำดับนี้มีความเข้ากันได้ของ Hive สิ่งนี้สามารถเขียนใน Hive เป็น
CREATE TABLE table1 (id int, name string, score float, type string)
STORED AS sequencefile;
ORC
ORC (Optimized Row Columnar) เป็นรูปแบบการจัดเก็บคอลัมน์จาก Hive
การสร้างตาราง
แบบสอบถามต่อไปนี้เป็นตัวอย่างสำหรับการสร้างตาราง -
CREATE TABLE optimized(num1 int,num2 text,num3 float) USING ORC;
รูปแบบ ORC มีคุณสมบัติดังต่อไปนี้ -
orc.max.merge.distance - ไฟล์ ORC ถูกอ่านมันจะรวมเมื่อระยะทางต่ำลง
orc.stripe.size - นี่คือขนาดของแต่ละแถบ
orc.buffer.size - ค่าเริ่มต้นคือ 256KB
orc.rowindex.stride - นี่คือการก้าวเดินของดัชนี ORC ในจำนวนแถว