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 ในจำนวนแถว