Apache Tajo - Gestion des tables

Une table est une vue logique d'une source de données. Il se compose d'un schéma logique, de partitions, d'une URL et de diverses propriétés. Une table Tajo peut être un répertoire dans HDFS, un seul fichier, une table HBase ou une table SGBDR.

Tajo prend en charge les deux types de tables suivants -

  • table externe
  • table interne

Table externe

La table externe a besoin de la propriété location lors de la création de la table. Par exemple, si vos données sont déjà présentes sous forme de fichiers Texte / JSON ou de table HBase, vous pouvez les enregistrer en tant que table externe Tajo.

La requête suivante est un exemple de création de table externe.

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

Ici,

  • External keyword- Ceci est utilisé pour créer une table externe. Cela permet de créer une table à l'emplacement spécifié.

  • Exemple fait référence au nom de la table.

  • Location- Il s'agit d'un répertoire pour HDFS, Amazon S3, HBase ou système de fichiers local. Pour attribuer une propriété d'emplacement aux répertoires, utilisez les exemples d'URI ci-dessous -

    • HDFS - hdfs: // localhost: port / chemin / vers / table

    • Amazon S3 - s3: // nom du compartiment / table

    • local file system - fichier: /// chemin / vers / table

    • Openstack Swift - swift: // nom du bucket / table

Propriétés de la table

Une table externe a les propriétés suivantes -

  • TimeZone - Les utilisateurs peuvent spécifier un fuseau horaire pour lire ou écrire un tableau.

  • Compression format- Utilisé pour rendre la taille des données compacte. Par exemple, le fichier text / json utilisecompression.codec propriété.

Table interne

Une table interne est également appelée Managed Table. Il est créé dans un emplacement physique prédéfini appelé le tablespace.

Syntaxe

create table table1(col1 int,col2 text);

Par défaut, Tajo utilise «tajo.warehouse.directory» situé dans «conf / tajo-site.xml». Pour attribuer un nouvel emplacement à la table, vous pouvez utiliser la configuration de l'espace disque logique.

Espace de table

L'espace de table est utilisé pour définir des emplacements dans le système de stockage. Il n'est pris en charge que pour les tables internes. Vous pouvez accéder aux tablespaces par leurs noms. Chaque tablespace peut utiliser un type de stockage différent. Si vous ne spécifiez pas d'espaces de table, Tajo utilise l'espace de table par défaut dans le répertoire racine.

Configuration de l'espace disque logique

Vous avez “conf/tajo-site.xml.template”à Tajo. Copiez le fichier et renommez-le en“storagesite.json”. Ce fichier servira de configuration pour les tablespaces. Les formats de données Tajo utilisent la configuration suivante -

Configuration HDFS

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

Configuration HBase

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

Configuration du fichier texte

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

Création de tablespace

Les enregistrements de table interne de Tajo ne sont accessibles qu'à partir d'une autre table. Vous pouvez le configurer avec un tablespace.

Syntaxe

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

Ici,

  • IF NOT EXISTS - Cela évite une erreur si la même table n'a pas déjà été créée.

  • TABLESPACE - Cette clause est utilisée pour attribuer le nom du tablespace.

  • Storage type - Les données Tajo prennent en charge des formats tels que le texte, JSON, HBase, Parquet, Sequencefile et ORC.

  • AS select statement - Sélectionnez les enregistrements d'une autre table.

Configurer le tablespace

Démarrez vos services Hadoop et ouvrez le fichier “conf/storage-site.json”, puis ajoutez les modifications suivantes -

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

Ici, Tajo se référera aux données de l'emplacement HDFS et space1est le nom du tablespace. Si vous ne démarrez pas les services Hadoop, vous ne pouvez pas enregistrer le tablespace.

Requete

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

La requête ci-dessus crée une table nommée «table1» et «espace1» fait référence au nom du tablespace.

Formats de données

Tajo prend en charge les formats de données. Passons en revue chacun des formats un par un en détail.

Texte

Un fichier texte brut de valeurs séparées par des caractères représente un ensemble de données tabulaire composé de lignes et de colonnes. Chaque ligne est une ligne de texte brut.

Créer une table

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

Ici, “customers.csv” file fait référence à un fichier de valeurs séparées par des virgules situé dans le répertoire d'installation de Tajo.

Pour créer une table interne au format texte, utilisez la requête suivante -

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

Dans la requête ci-dessus, vous n'avez attribué aucun espace de table, il prendra donc l'espace de table par défaut de Tajo.

Propriétés

Un format de fichier texte a les propriétés suivantes -

  • text.delimiter- Ceci est un caractère délimiteur. La valeur par défaut est «|».

  • compression.codec- Ceci est un format de compression. Par défaut, c'est désactivé. vous pouvez modifier les paramètres à l'aide de l'algorithme spécifié.

  • timezone - La table utilisée pour la lecture ou l'écriture.

  • text.error-tolerance.max-num - Le nombre maximum de niveaux de tolérance.

  • text.skip.headerlines - Le nombre de lignes d'en-tête par ignoré.

  • text.serde - C'est la propriété de sérialisation.

JSON

Apache Tajo prend en charge le format JSON pour l'interrogation des données. Tajo traite un objet JSON comme un enregistrement SQL. Un objet équivaut à une ligne dans une table Tajo. Considérons «array.json» comme suit -

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

Après avoir créé ce fichier, basculez vers le shell Tajo et tapez la requête suivante pour créer une table au format JSON.

Requete

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

N'oubliez pas que les données du fichier doivent correspondre au schéma de la table. Sinon, vous pouvez omettre les noms de colonne et utiliser * qui ne nécessite pas de liste de colonnes.

Pour créer une table interne, utilisez la requête suivante -

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

Parquet

Le parquet est un format de stockage en colonnes. Tajo utilise le format Parquet pour un accès facile, rapide et efficace.

Création de table

La requête suivante est un exemple de création de table -

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

Le format de fichier Parquet a les propriétés suivantes -

  • parquet.block.size - taille d'un groupe de lignes mis en mémoire tampon.

  • parquet.page.size - La taille de la page est pour la compression.

  • parquet.compression - L'algorithme de compression utilisé pour compresser les pages.

  • parquet.enable.dictionary - La valeur booléenne permet d'activer / de désactiver l'encodage du dictionnaire.

RCFile

RCFile est le fichier en colonne d'enregistrement. Il se compose de paires clé / valeur binaires.

Création de table

La requête suivante est un exemple de création de table -

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

RCFile a les propriétés suivantes -

  • rcfile.serde - classe de désérialiseur personnalisée.

  • compression.codec - algorithme de compression.

  • rcfile.null - Caractère NULL.

SequenceFile

SequenceFile est un format de fichier de base dans Hadoop qui se compose de paires clé / valeur.

Création de table

La requête suivante est un exemple de création de table -

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

Ce fichier de séquence est compatible avec Hive. Cela peut être écrit dans Hive comme suit:

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

ORC

ORC (Optimized Row Columnar) est un format de stockage en colonnes de Hive.

Création de table

La requête suivante est un exemple de création de table -

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

Le format ORC a les propriétés suivantes -

  • orc.max.merge.distance - Le fichier ORC est lu, il fusionne lorsque la distance est inférieure.

  • orc.stripe.size - C'est la taille de chaque bande.

  • orc.buffer.size - La valeur par défaut est de 256 Ko.

  • orc.rowindex.stride - Il s'agit du pas d'index ORC en nombre de lignes.