Apache Tajo - Gestione tabelle

Una tabella è una vista logica di un'origine dati. È costituito da uno schema logico, partizioni, URL e varie proprietà. Una tabella Tajo può essere una directory in HDFS, un singolo file, una tabella HBase o una tabella RDBMS.

Tajo supporta i seguenti due tipi di tabelle:

  • tavolo esterno
  • tavolo interno

Tavolo esterno

La tabella esterna necessita della proprietà location quando viene creata la tabella. Ad esempio, se i tuoi dati sono già presenti come file di testo / JSON o tabella HBase, puoi registrarli come tabella esterna Tajo.

La seguente query è un esempio di creazione di tabelle esterne.

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

Qui,

  • External keyword- Viene utilizzato per creare una tabella esterna. Questo aiuta a creare una tabella nella posizione specificata.

  • Il campione si riferisce al nome della tabella.

  • Location- È una directory per HDFS, Amazon S3, HBase o file system locale. Per assegnare una proprietà location per le directory, utilizzare gli esempi di URI seguenti:

    • HDFS - hdfs: // localhost: port / path / to / table

    • Amazon S3 - s3: // nome-bucket / tabella

    • local file system - file: /// percorso / a / tabella

    • Openstack Swift - swift: // nome-bucket / tabella

Proprietà tabella

Una tabella esterna ha le seguenti proprietà:

  • TimeZone - Gli utenti possono specificare un fuso orario per leggere o scrivere una tabella.

  • Compression format- Utilizzato per rendere compatta la dimensione dei dati. Ad esempio, il file text / json utilizzacompression.codec proprietà.

Tavolo interno

Una tabella interna è anche chiamata Managed Table. Viene creato in una posizione fisica predefinita chiamata Tablespace.

Sintassi

create table table1(col1 int,col2 text);

Per impostazione predefinita, Tajo utilizza "tajo.warehouse.directory" che si trova in "conf / tajo-site.xml". Per assegnare una nuova posizione per la tabella, è possibile utilizzare la configurazione dello spazio tabelle.

Tablespace

Lo spazio tabelle viene utilizzato per definire le posizioni nel sistema di archiviazione. È supportato solo per le tabelle interne. È possibile accedere ai tablespace tramite i loro nomi. Ogni tablespace può utilizzare un diverso tipo di archiviazione. Se non si specificano i tablespace, Tajo utilizza il tablespace predefinito nella directory root.

Configurazione tablespace

Hai “conf/tajo-site.xml.template”a Tajo. Copia il file e rinominalo in“storagesite.json”. Questo file fungerà da configurazione per gli spazi tabelle. I formati di dati Tajo utilizzano la seguente configurazione:

Configurazione HDFS

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

Configurazione HBase

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

Configurazione file di testo

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

Creazione tablespace

È possibile accedere ai record della tabella interna di Tajo solo da un'altra tabella. Puoi configurarlo con tablespace.

Sintassi

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

Qui,

  • IF NOT EXISTS - Questo evita un errore se la stessa tabella non è già stata creata.

  • TABLESPACE - Questa clausola viene utilizzata per assegnare il nome del tablespace.

  • Storage type - I dati Tajo supportano formati come testo, JSON, HBase, Parquet, Sequencefile e ORC.

  • AS select statement - Seleziona i record da un'altra tabella.

Configurare lo spazio tabelle

Avvia i tuoi servizi Hadoop e apri il file “conf/storage-site.json”, quindi aggiungi le seguenti modifiche:

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

Qui, Tajo farà riferimento ai dati dalla posizione HDFS e space1è il nome del tablespace. Se non avvii i servizi Hadoop, non puoi registrare il tablespace.

Query

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

La query precedente crea una tabella denominata "table1" e "space1" si riferisce al nome del tablespace.

Formati di dati

Tajo supporta i formati di dati. Esaminiamo in dettaglio ciascuno dei formati uno per uno.

Testo

Un file di testo normale con valori separati da caratteri rappresenta un set di dati tabulare costituito da righe e colonne. Ogni riga è una riga di testo normale.

Creazione tabella

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

Qui, “customers.csv” file fa riferimento a un file con valori separati da virgole situato nella directory di installazione di Tajo.

Per creare una tabella interna utilizzando il formato testo, utilizzare la seguente query:

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

Nella query precedente, non hai assegnato alcun tablespace, quindi prenderà il tablespace predefinito di Tajo.

Proprietà

Un formato di file di testo ha le seguenti proprietà:

  • text.delimiter- Questo è un carattere delimitatore. L'impostazione predefinita è "|".

  • compression.codec- Questo è un formato di compressione. Per impostazione predefinita, è disabilitato. è possibile modificare le impostazioni utilizzando l'algoritmo specificato.

  • timezone - Il tavolo utilizzato per leggere o scrivere.

  • text.error-tolerance.max-num - Il numero massimo di livelli di tolleranza.

  • text.skip.headerlines - Il numero di righe di intestazione per ignorate.

  • text.serde - Questa è la proprietà di serializzazione.

JSON

Apache Tajo supporta il formato JSON per l'interrogazione dei dati. Tajo tratta un oggetto JSON come record SQL. Un oggetto è uguale a una riga in una tabella Tajo. Consideriamo "array.json" come segue:

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

Dopo aver creato questo file, passare alla shell Tajo e digitare la seguente query per creare una tabella utilizzando il formato JSON.

Query

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

Ricorda sempre che i dati del file devono corrispondere allo schema della tabella. Altrimenti, puoi omettere i nomi delle colonne e utilizzare * che non richiede l'elenco delle colonne.

Per creare una tabella interna, utilizzare la seguente query:

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

Parquet

Il parquet è un formato di archiviazione colonnare. Tajo utilizza il formato Parquet per un accesso facile, veloce ed efficiente.

Creazione di tabelle

La seguente query è un esempio per la creazione di tabelle:

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

Il formato file parquet ha le seguenti proprietà:

  • parquet.block.size - dimensione di un gruppo di righe memorizzato nel buffer.

  • parquet.page.size - La dimensione della pagina è per la compressione.

  • parquet.compression - L'algoritmo di compressione utilizzato per comprimere le pagine.

  • parquet.enable.dictionary - Il valore booleano serve per abilitare / disabilitare la codifica del dizionario.

RCFile

RCFile è il file a colonne del record. Consiste di coppie binarie chiave / valore.

Creazione di tabelle

La seguente query è un esempio per la creazione di tabelle:

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

RCFile ha le seguenti proprietà:

  • rcfile.serde - classe deserializzatore personalizzata.

  • compression.codec - algoritmo di compressione.

  • rcfile.null - Carattere NULL.

SequenceFile

SequenceFile è un formato di file di base in Hadoop che consiste in coppie chiave / valore.

Creazione di tabelle

La seguente query è un esempio per la creazione di tabelle:

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

Questo file di sequenza è compatibile con Hive. Questo può essere scritto in Hive come,

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

ORC

ORC (Optimized Row Columnar) è un formato di archiviazione a colonne di Hive.

Creazione di tabelle

La seguente query è un esempio per la creazione di tabelle:

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

Il formato ORC ha le seguenti proprietà:

  • orc.max.merge.distance - Il file ORC viene letto, si unisce quando la distanza è inferiore.

  • orc.stripe.size - Questa è la dimensione di ogni striscia.

  • orc.buffer.size - L'impostazione predefinita è 256 KB.

  • orc.rowindex.stride - Questo è il passo dell'indice ORC in numero di righe.