Apache Tajo - Gestión de tablas

Una tabla es una vista lógica de una fuente de datos. Consta de un esquema lógico, particiones, URL y varias propiedades. Una tabla Tajo puede ser un directorio en HDFS, un solo archivo, una tabla HBase o una tabla RDBMS.

Tajo admite los siguientes dos tipos de tablas:

  • mesa externa
  • mesa interna

Mesa externa

La tabla externa necesita la propiedad de ubicación cuando se crea la tabla. Por ejemplo, si sus datos ya están allí como archivos de texto / JSON o tabla HBase, puede registrarlos como tabla externa Tajo.

La siguiente consulta es un ejemplo de creación de una tabla externa.

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

Aquí,

  • External keyword- Esto se usa para crear una tabla externa. Esto ayuda a crear una tabla en la ubicación especificada.

  • Ejemplo se refiere al nombre de la tabla.

  • Location- Es un directorio para HDFS, Amazon S3, HBase o sistema de archivos local. Para asignar una propiedad de ubicación para directorios, use los siguientes ejemplos de URI:

    • HDFS - hdfs: // localhost: puerto / ruta / a / tabla

    • Amazon S3 - s3: // nombre del depósito / tabla

    • local file system - archivo: /// ruta / a / tabla

    • Openstack Swift - swift: // nombre-cubo / tabla

Propiedades de la tabla

Una tabla externa tiene las siguientes propiedades:

  • TimeZone - Los usuarios pueden especificar una zona horaria para leer o escribir una tabla.

  • Compression format- Se utiliza para hacer que el tamaño de los datos sea compacto. Por ejemplo, el archivo text / json usacompression.codec propiedad.

Mesa interna

Una tabla interna también se llama Managed Table. Se crea en una ubicación física predefinida denominada Tablespace.

Sintaxis

create table table1(col1 int,col2 text);

De forma predeterminada, Tajo usa “tajo.warehouse.directory” ubicado en “conf / tajo-site.xml”. Para asignar una nueva ubicación para la tabla, puede usar la configuración del espacio de tabla.

Tablespace

El espacio de tabla se utiliza para definir ubicaciones en el sistema de almacenamiento. Solo es compatible con tablas internas. Puede acceder a los espacios de tabla por sus nombres. Cada espacio de tabla puede utilizar un tipo de almacenamiento diferente. Si no especifica espacios de tabla, Tajo usa el espacio de tabla predeterminado en el directorio raíz.

Configuración del espacio de tabla

Tienes “conf/tajo-site.xml.template”en el Tajo. Copie el archivo y cámbiele el nombre a“storagesite.json”. Este archivo actuará como una configuración para Tablespaces. Los formatos de datos de Tajo utilizan la siguiente configuración:

Configuración HDFS

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

Configuración de HBase

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

Configuración del archivo de texto

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

Creación de espacio de tabla

Solo se puede acceder a los registros de la tabla interna de Tajo desde otra tabla. Puede configurarlo con tablespace.

Sintaxis

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

Aquí,

  • IF NOT EXISTS - Esto evita un error si no se ha creado la misma tabla.

  • TABLESPACE - Esta cláusula se utiliza para asignar el nombre del espacio de tabla.

  • Storage type - Los datos de Tajo admiten formatos como texto, JSON, HBase, Parquet, Sequencefile y ORC.

  • AS select statement - Seleccionar registros de otra tabla.

Configurar el espacio de tabla

Inicie sus servicios de Hadoop y abra el archivo “conf/storage-site.json”, luego agregue los siguientes cambios:

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

Aquí, Tajo se referirá a los datos de la ubicación HDFS y space1es el nombre del espacio de tabla. Si no inicia los servicios de Hadoop, no puede registrar tablespace.

Consulta

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

La consulta anterior crea una tabla llamada "tabla1" y "espacio1" se refiere al nombre del espacio de tabla.

Formatos de datos

Tajo admite formatos de datos. Repasemos cada uno de los formatos uno por uno en detalle.

Texto

Un archivo de texto sin formato de valores separados por caracteres representa un conjunto de datos tabulares que consta de filas y columnas. Cada fila es una línea de texto sin formato.

Creando tabla

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

Aquí, “customers.csv” archivo se refiere a un archivo de valores separados por comas ubicado en el directorio de instalación de Tajo.

Para crear una tabla interna usando formato de texto, use la siguiente consulta:

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

En la consulta anterior, no ha asignado ningún espacio de tabla, por lo que tomará el espacio de tabla predeterminado de Tajo.

Propiedades

Un formato de archivo de texto tiene las siguientes propiedades:

  • text.delimiter- Este es un carácter delimitador. El valor predeterminado es '|'.

  • compression.codec- Este es un formato de compresión. Por defecto, está deshabilitado. puede cambiar la configuración utilizando el algoritmo especificado.

  • timezone - La mesa utilizada para leer o escribir.

  • text.error-tolerance.max-num - El número máximo de niveles de tolerancia.

  • text.skip.headerlines - El número de líneas de encabezado por omitidas.

  • text.serde - Esta es la propiedad de serialización.

JSON

Apache Tajo admite el formato JSON para consultar datos. Tajo trata un objeto JSON como un registro SQL. Un objeto equivale a una fila en una tabla Tajo. Consideremos "array.json" de la siguiente manera:

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

Después de crear este archivo, cambie al shell Tajo y escriba la siguiente consulta para crear una tabla usando el formato JSON.

Consulta

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

Recuerde siempre que los datos del archivo deben coincidir con el esquema de la tabla. De lo contrario, puede omitir los nombres de las columnas y usar *, que no requiere la lista de columnas.

Para crear una tabla interna, use la siguiente consulta:

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

Parquet

Parquet es un formato de almacenamiento columnar. Tajo utiliza el formato Parquet para un acceso fácil, rápido y eficaz.

Creación de tablas

La siguiente consulta es un ejemplo de creación de tablas:

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

El formato de archivo de parquet tiene las siguientes propiedades:

  • parquet.block.size - tamaño de un grupo de filas que se almacena en memoria intermedia.

  • parquet.page.size - El tamaño de la página es para compresión.

  • parquet.compression - El algoritmo de compresión utilizado para comprimir páginas.

  • parquet.enable.dictionary - El valor booleano es para habilitar / deshabilitar la codificación del diccionario.

RCFile

RCFile es el archivo de registro en columnas. Consiste en pares de clave / valor binarios.

Creación de tablas

La siguiente consulta es un ejemplo de creación de tablas:

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

RCFile tiene las siguientes propiedades:

  • rcfile.serde - clase de deserializador personalizado.

  • compression.codec - algoritmo de compresión.

  • rcfile.null - Carácter NULO.

SequenceFile

SequenceFile es un formato de archivo básico en Hadoop que consta de pares clave / valor.

Creación de tablas

La siguiente consulta es un ejemplo de creación de tablas:

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

Este archivo de secuencia tiene compatibilidad con Hive. Esto se puede escribir en Hive como,

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

ORC

ORC (Optimized Row Columnar) es un formato de almacenamiento en columnas de Hive.

Creación de tablas

La siguiente consulta es un ejemplo de creación de tablas:

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

El formato ORC tiene las siguientes propiedades:

  • orc.max.merge.distance - Se lee el archivo ORC, se fusiona cuando la distancia es menor.

  • orc.stripe.size - Este es el tamaño de cada raya.

  • orc.buffer.size - El valor predeterminado es 256 KB.

  • orc.rowindex.stride - Este es el índice de ORC en el número de filas.