Apache Tajo - Zarządzanie tabelami
Tabela to logiczny widok jednego źródła danych. Składa się ze schematu logicznego, partycji, adresu URL i różnych właściwości. Tabela Tajo może być katalogiem w HDFS, pojedynczym plikiem, jedną tabelą HBase lub tabelą RDBMS.
Tajo obsługuje następujące dwa typy tabel -
- stół zewnętrzny
- stół wewnętrzny
Tabela zewnętrzna
Tabela zewnętrzna wymaga właściwości location podczas tworzenia tabeli. Na przykład, jeśli Twoje dane są już tam jako pliki tekstowe / JSON lub tabela HBase, możesz zarejestrować je jako zewnętrzną tabelę Tajo.
Poniższe zapytanie jest przykładem tworzenia tabeli zewnętrznej.
create external table sample(col1 int,col2 text,col3 int) location ‘hdfs://path/to/table';
Tutaj,
External keyword- Służy do tworzenia tabeli zewnętrznej. Pomaga to w utworzeniu tabeli w określonej lokalizacji.
Próbka odnosi się do nazwy tabeli.
Location- Jest to katalog dla HDFS, Amazon S3, HBase lub lokalnego systemu plików. Aby przypisać właściwość lokalizacji do katalogów, użyj poniższych przykładów identyfikatorów URI -
HDFS - hdfs: // localhost: port / ścieżka / do / tabeli
Amazon S3 - s3: // nazwa-zasobnika / tabela
local file system - plik: /// ścieżka / do / tabeli
Openstack Swift - swift: // nazwa-zasobnika / tabela
Właściwości tabeli
Tabela zewnętrzna ma następujące właściwości -
TimeZone - Użytkownicy mogą określić strefę czasową do czytania lub pisania tabeli.
Compression format- Służy do zmniejszania rozmiaru danych. Na przykład plik text / json używacompression.codec własność.
Tabela wewnętrzna
Tabela wewnętrzna jest również nazywana Managed Table. Jest tworzony we wstępnie zdefiniowanej fizycznej lokalizacji zwanej Przestrzenią tabel.
Składnia
create table table1(col1 int,col2 text);
Domyślnie Tajo używa „tajo.warehouse.directory” znajdującego się w „conf / tajo-site.xml”. Aby przypisać nową lokalizację tabeli, możesz użyć konfiguracji obszaru tabel.
Przestrzeń tabel
Przestrzeń tabel służy do definiowania lokalizacji w systemie pamięci masowej. Jest obsługiwany tylko dla tabel wewnętrznych. Możesz uzyskać dostęp do obszarów tabel za pomocą ich nazw. Każdy obszar tabel może używać innego typu pamięci. Jeśli wtedy nie określisz obszarów tabel, Tajo użyje domyślnego obszaru tabel w katalogu głównym.
Konfiguracja przestrzeni tabel
Ty masz “conf/tajo-site.xml.template”w Tajo. Skopiuj plik i zmień jego nazwę na“storagesite.json”. Ten plik będzie działał jako konfiguracja dla obszarów tabel. Formaty danych Tajo używają następującej konfiguracji -
Konfiguracja HDFS
$ vi conf/storage-site.json {
"spaces": {
"${tablespace_name}": {
"uri": “hdfs://localhost:9000/path/to/Tajo"
}
}
}
Konfiguracja HBase
$ vi conf/storage-site.json {
"spaces": {
"${tablespace_name}": {
"uri": “hbase:zk://quorum1:port,quorum2:port/"
}
}
}
Konfiguracja pliku tekstowego
$ vi conf/storage-site.json {
"spaces": {
"${tablespace_name}": {
“uri”: “hdfs://localhost:9000/path/to/Tajo”
}
}
}
Tworzenie przestrzeni tabel
Dostęp do wewnętrznych rekordów tabeli Tajo można uzyskać tylko z innej tabeli. Możesz to skonfigurować za pomocą obszaru tabel.
Składnia
CREATE TABLE [IF NOT EXISTS] <table_name> [(column_list)] [TABLESPACE tablespace_name]
[using <storage_type> [with (<key> = <value>, ...)]] [AS <select_statement>]
Tutaj,
IF NOT EXISTS - Pozwala to uniknąć błędu, jeśli ta sama tabela nie została jeszcze utworzona.
TABLESPACE - Ta klauzula służy do przypisywania nazwy obszaru tabel.
Storage type - Dane Tajo obsługują formaty takie jak tekst, JSON, HBase, Parquet, Sequencefile i ORC.
AS select statement - Wybierz rekordy z innej tabeli.
Skonfiguruj przestrzeń tabel
Uruchom usługi Hadoop i otwórz plik “conf/storage-site.json”, a następnie dodaj następujące zmiany -
$ vi conf/storage-site.json {
"spaces": {
“space1”: {
"uri": “hdfs://localhost:9000/path/to/Tajo"
}
}
}
Tutaj Tajo będzie odnosić się do danych z lokalizacji HDFS i space1to nazwa obszaru tabel. Jeśli nie uruchomisz usług Hadoop, nie możesz zarejestrować obszaru tabel.
Pytanie
default> create table table1(num1 int,num2 text,num3 float) tablespace space1;
Powyższe zapytanie tworzy tabelę o nazwie „tabela1”, a „przestrzeń1” odnosi się do nazwy obszaru tabel.
Formaty danych
Tajo obsługuje formaty danych. Przyjrzyjmy się szczegółowo każdemu z formatów.
Tekst
Zwykły plik tekstowy z wartościami rozdzielanymi znakami reprezentuje tabelaryczny zestaw danych składający się z wierszy i kolumn. Każdy wiersz to zwykły wiersz tekstu.
Tworzenie tabeli
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’;
Tutaj, “customers.csv” plik odnosi się do pliku wartości rozdzielanych przecinkami znajdującego się w katalogu instalacyjnym Tajo.
Aby utworzyć wewnętrzną tabelę przy użyciu formatu tekstowego, użyj następującego zapytania -
default> create table customer(id int,name text,address text,age int) using text;
W powyższym zapytaniu nie przypisałeś żadnej przestrzeni tabel, więc przyjmie domyślną przestrzeń tabel Tajo.
Nieruchomości
Format pliku tekstowego ma następujące właściwości -
text.delimiter- To jest znak ogranicznika. Domyślnie jest to „|”.
compression.codec- To jest format kompresji. Domyślnie jest wyłączony. możesz zmienić ustawienia za pomocą określonego algorytmu.
timezone - Stolik używany do czytania lub pisania.
text.error-tolerance.max-num - Maksymalna liczba poziomów tolerancji.
text.skip.headerlines - liczba linii nagłówka na pominięte.
text.serde - To jest właściwość serializacji.
JSON
Apache Tajo obsługuje format JSON do wyszukiwania danych. Tajo traktuje obiekt JSON jako rekord SQL. Jeden obiekt to jeden wiersz w tabeli Tajo. Rozważmy „array.json” w następujący sposób -
$ hdfs dfs -cat /json/array.json {
"num1" : 10,
"num2" : "simple json array",
"num3" : 50.5
}
Po utworzeniu tego pliku przejdź do powłoki Tajo i wpisz następujące zapytanie, aby utworzyć tabelę w formacie JSON.
Pytanie
default> create external table sample (num1 int,num2 text,num3 float)
using json location ‘json/array.json’;
Zawsze pamiętaj, że dane pliku muszą być zgodne ze schematem tabeli. W przeciwnym razie możesz pominąć nazwy kolumn i użyć znaku *, który nie wymaga listy kolumn.
Aby utworzyć wewnętrzną tabelę, użyj następującego zapytania -
default> create table sample (num1 int,num2 text,num3 float) using json;
Parkiet
Parkiet to kolumnowy format przechowywania. Tajo używa formatu Parquet dla łatwego, szybkiego i wydajnego dostępu.
Tworzenie tabeli
Poniższe zapytanie jest przykładem tworzenia tabeli -
CREATE TABLE parquet (num1 int,num2 text,num3 float) USING PARQUET;
Format pliku parkietu ma następujące właściwości -
parquet.block.size - rozmiar grupy wierszy buforowanych w pamięci.
parquet.page.size - Rozmiar strony służy do kompresji.
parquet.compression - Algorytm kompresji używany do kompresji stron.
parquet.enable.dictionary - Wartość logiczna włącza / wyłącza kodowanie słownika.
RCFile
RCFile to plik kolumnowy rekordów. Składa się z binarnych par klucz / wartość.
Tworzenie tabeli
Poniższe zapytanie jest przykładem tworzenia tabeli -
CREATE TABLE Record(num1 int,num2 text,num3 float) USING RCFILE;
RCFile ma następujące właściwości -
rcfile.serde - niestandardowa klasa deserializatora.
compression.codec - algorytm kompresji.
rcfile.null - znak NULL.
SequenceFile
SequenceFile to podstawowy format pliku na platformie Hadoop, który składa się z par klucz / wartość.
Tworzenie tabeli
Poniższe zapytanie jest przykładem tworzenia tabeli -
CREATE TABLE seq(num1 int,num2 text,num3 float) USING sequencefile;
Ten plik sekwencji ma zgodność z Hive. Można to zapisać w Hive jako:
CREATE TABLE table1 (id int, name string, score float, type string)
STORED AS sequencefile;
ORC
ORC (Optimized Row Columnar) to kolumnowy format przechowywania z Hive.
Tworzenie tabeli
Poniższe zapytanie jest przykładem tworzenia tabeli -
CREATE TABLE optimized(num1 int,num2 text,num3 float) USING ORC;
Format ORC ma następujące właściwości -
orc.max.merge.distance - Plik ORC jest odczytywany, łączy się, gdy odległość jest mniejsza.
orc.stripe.size - To jest rozmiar każdego paska.
orc.buffer.size - Wartość domyślna to 256 KB.
orc.rowindex.stride - To jest krok indeksu ORC w liczbie wierszy.